使用输入通过 pymysql 插入数据

Insert Data with pymysql using inputs

我正在处理数据库,但在使用 pymysql 插入某些值时遇到问题

cur.execute("""INSERT INTO orders (name, size, type, is_done) VALUES (%s, %s, %s, %s)""" 
% (name, size, type, is_done))

其中 name、sizetype 是字符串,is_done 是一个布尔值

它给了我典型的错误 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near,所以我认为问题是 ',但我该如何解决它?

编辑

我还应该补充一点,名称值是从 MySQL DB

中检索的

我找到了问题所在,而不是

  cur.execute("""INSERT INTO orders (name, size, type, is_done) 
  VALUES (%s, %s, %s, %s)""" 
  % (name, size, type, is_done))

我应该做的

cur.execute("""INSERT INTO orders (name, size, type, is_done) 
 VALUES ("%s", "%s", "%s", "%s")""" 
% (name, size, type, is_done))

如果您没有为 id 输入值。你有一个错误。试试这个查询。

cur.execute("insert into orders values(%s, %s, %s, %s, %s)", (None, name, size, type, is_done))

“%s”和 "None" 用于 id 列。这个查询运行我的代码。 注意:不要忘记 commit()

当前接受的解决方案有一个 SQL injection 漏洞。您不应该使用 % 运算符格式化字符串 - 只需将参数元组作为第二个参数传递,库将处理其余部分。

cur.execute("INSERT INTO orders (name, size, type, is_done) VALUES (%s, %s, %s, %s)",
    (name, size, type, is_done))

另见 and pymysql documentation