Sco*_*CSD 8 python sql postgresql
只是初学者使用python/postgres组合,请原谅我,如果这是微不足道的.我正在使用sqlalchemy执行原始SQL查询:
SELECT * FROM table WHERE pk_table_id IN ()
Run Code Online (Sandbox Code Playgroud)
对于下面的示例,我尝试self.ids了包含字符串或整数的元组以及包含字符串或整数的数组.无论哪种方式,它都无法正常工作.
当我使用这一行时:
my_connection.execute('SELECT * FROM public.table WHERE pk_table_id IN (%s)', self.ids)
Run Code Online (Sandbox Code Playgroud)
我收到错误:
TypeError: not all arguments converted during string formatting
Run Code Online (Sandbox Code Playgroud)
有什么建议?
您可以使用cur.mogrify方法:
cur = my_connection.cursor()
cur.execute(cur.mogrify('SELECT * FROM public.table WHERE pk_table_id IN %s', (tuple(self.ids),)))
Run Code Online (Sandbox Code Playgroud)
我最终放弃了SqlAlchemy直接psycopg2,所以我不知道它是否适用100%.我发现如果你传递一个元组而不是一个数组/列表,psycopg2将正确编译IN子句.我通过了一个整数元组,它运行得很好.