psycopg2 将参数传递给 SQL 编程错误
我尝试按照文档中描述的方式传递参数,但是我收到以下错误: 文件“slug_word.py”,第 100 行,在 get_col 中 cur.execute("从%s中选择%s",数据) psycopg2.ProgrammingError:“E'catalog_category'”处或附近存在语法错误 第 1 行:从 E'catalog_category' 中选择 E'slug'
以下是我的代码的摘录:
def get_col(cxn, table, col):
"fetch a column"
cur = cxn.cursor()
data = (col, table)
cur.execute("select %s from %s" , data )
rows = cur.fetchall()
return rows
def main():
cxn = connect('galleria')
table = 'catalog_category'
col = 'slug'
rows = get_col(cxn, table, col)
I tried to pass parameters the way it is described in the docs, but I get the following error:
File "slug_word.py", line 100, in get_col
cur.execute("select %s from %s" , data )
psycopg2.ProgrammingError: syntax error at or near "E'catalog_category'"
LINE 1: select E'slug' from E'catalog_category'
Here are extracts from my code:
def get_col(cxn, table, col):
"fetch a column"
cur = cxn.cursor()
data = (col, table)
cur.execute("select %s from %s" , data )
rows = cur.fetchall()
return rows
def main():
cxn = connect('galleria')
table = 'catalog_category'
col = 'slug'
rows = get_col(cxn, table, col)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
通过重读帖子 Steve Holden 关于这个问题我发现提示,在我的代码中参数必须以 python 方式传递:
只有进入数据库的“真实”数据必须使用psycopg2 参数方法而不是表名和列名之类的东西。
不幸的是,数据和表名的混合不起作用。
By rereading a post Steve Holden about this issue I found the hint that in my code the parameters have to be passed the python way:
Only 'real' data which goes into the database has to use the psycopg2 parameter method and not things like table and column names.
Unfortunately mixing of data and table name does not work.
您可以使用 AsIs psycopg2 函数:
You can use AsIs psycopg2 function: