我正在使用数据库而我在使用pymysql来插入某些值时遇到了麻烦
cur.execute("""INSERT INTO orders (name, size, type, is_done) VALUES (%s, %s, %s, %s)"""
% (name, size, type, is_done))
其中名称,大小和类型是字符串, is_done 是bool
它给了我典型的错误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中检索名称值
答案 0 :(得分:2)
当前接受的解决方案具有SQL injection漏洞。您不应该使用%
运算符来格式化字符串-只需将参数的元组作为第二个参数传递,库将处理其余的参数。
cur.execute("INSERT INTO orders (name, size, type, is_done) VALUES (%s, %s, %s, %s)",
(name, size, type, is_done))
答案 1 :(得分:0)
我发现了问题,而不是
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))
答案 2 :(得分:0)
如果您没有输入id的值。您有错误。试试这个查询。
cur.execute("insert into orders values(%s, %s, %s, %s, %s)", (None, name, size, type, is_done))
“%s”和“ None”(用于ID列)。这个查询运行我的代码。 注意:不要忘记commit()