![](/img/trans.png)
[英]MySQL why cursor.execute(sql, multi=True) does not work but 2 cursor.execute(sql) works?
[英]Why does PostgreSQL cursor.execute() command add single quotes?
简单的SQL语句:
sql = "DROP TABLE IF EXISTS %s"
cursor.execute(sql, ("user_table",))
它失败并显示:
psycopg2.ProgrammingError: syntax error at or near "'user_table'"
LINE 1: DROP TABLE IF EXISTS 'user_table'
SQL语句中的单引号就是问题所在。 如果我运行它,就可以了:
cursor.execute("DROP TABLE IF EXISTS user_table")
您只能将参数语法用于参数,而不能用于表或列名称。
AsIs
适配器对于其字符串表示形式已作为SQL表示形式有效的对象很有用
from psycopg2.extensions import AsIs
sql = "DROP TABLE IF EXISTS %s"
cursor.execute(sql, (AsIs("user_table"),))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.