[英]python sqlite3 syntax error with string when doing update
我在python中有此功能,尝试用字符串更新表:
table.execute("UPDATE " + tableName + " SET " +
colName + "=" + colVal +
" WHERE " + name + "=(" + val + ")")
它总是返回错误:sqlite3.OperationalError:在“ Look”附近:语法错误。
我应该如何处理我的“ val”值,以便可以将字符串添加到数据库中?
==更新==尝试了此查询,但它也不起作用:
table.execute("UPDATE " + tableName + " SET " +
colName + "=" + colValue +
" WHERE " + name + "= ?", (val,))
在sql查询中使用直接变量存在主要缺陷:
http://www.w3schools.com/sql/sql_injection.asp
阅读更多关于它们的信息。 但是,如果您确实想使代码正常工作,则可以进行以下更改:
table.execute("UPDATE " + tableName + " SET " +
colName + "='" + colVal +
"' WHERE " + name + "=('" + val + "')")
table.commit()
由于val / colVal是要传递给查询的字符串,因此应该对其进行转义。
在此处添加了有效的示例示例: https : //gist.github.com/vi3k6i5/869d299e8afe99593b79ae41051ebf63
正如@Deepspace在注释中指出的那样,直接在db上执行的SQL是不安全的。
因此,执行所有这些操作的好方法是使用ORM。 诸如django或SQLalchemy之类的东西
通过他们的例子,他们很简单。 他们有自己的结构来更改db。 更新/插入/删除所有内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.