繁体   English   中英

为什么PostgreSQL cursor.execute()命令添加单引号?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM