2024-09-30 01:36:01 发布
网友
我基本上是想完成回答者在这里指出的:psycopg2 cursor.execute() with SQL query parameter causes syntax error
我的声明是:
cursor.execute('SELECT %s FROM %s WHERE %s = %s' % (pkey,table,field, "%s"), (value))
但当我运行它时,我得到了一个错误:
您的问题是不是引用,而是Python的元组语法。在
正如您在上面已经说过的,表示一个元素元组的正确方法是(value,)。一般来说,元组语法是(非正式的):
(value,)
() (value,) (value, value) (value, value, value)
等等,对于多元元组。在
接受的答案并不真正正确,其中建议的更改纯粹是一个品味问题(是否将最后一个“%s”附加在替换之后,而不是您的尝试)。在
请记住:在Python中执行常见的字符串替换时,如果字符串只有一个%s,那么可以删除元组,只需传递单个替换字符串本身:
%s
这将导致foo bar。在
foo bar
你可以在psycopg的cursor.execute上尝试同样的方法,也许它可以工作(我会在发布之前自己测试它,但我不能)。在
psycopg
cursor.execute
尝试以下操作,db模块应注意正确引用:
sql = 'SELECT %s FROM %s WHERE %s' % (pkey, table, field) + ' = %s' cursor.execute(sql, (value, ))
您的问题是不是引用,而是Python的元组语法。在
正如您在上面已经说过的,表示一个元素元组的正确方法是
(value,)
。一般来说,元组语法是(非正式的):等等,对于多元元组。在
接受的答案并不真正正确,其中建议的更改纯粹是一个品味问题(是否将最后一个“%s”附加在替换之后,而不是您的尝试)。在
请记住:在Python中执行常见的字符串替换时,如果字符串只有一个
^{pr2}$%s
,那么可以删除元组,只需传递单个替换字符串本身:这将导致
foo bar
。在你可以在
psycopg
的cursor.execute
上尝试同样的方法,也许它可以工作(我会在发布之前自己测试它,但我不能)。在尝试以下操作,db模块应注意正确引用:
相关问题 更多 >
编程相关推荐