多个值执行SQL查询Psycopg2
问题描述:
我使用psycopg2执行一些PostGIS的查询,但我遇到的问题。比方说,我运行查询:多个值执行SQL查询Psycopg2
cursor.execute("SELECT locations FROM locationtable")
这给了我一个python变量,这是一个点几何的列表。后来,说我想将它们转换成不同的SRID我希望能够做到:
cursor.execute("SELECT ST_Transform(%s,32146)",(locs))
但是这给了我一个错误:
TypeError: not all arguments converted during string formatting
我在这种情况下,我能实现刚刚合并这两个SQL命令,但是这是一个普遍的问题我已经遇到,想知道是否有通过元组的清单,psycopg2并有SQL命令的所有值执行的方式。
答
这可能与方法executemany
工作:
cursor.executemany("SELECT ST_Transform(%s,32146)",(locs))
但locs
需要被元组或其他序列类型的列表,例如:
locs = [(val,) for val in locs]
该错误可能是因为第一次查询返回一个列表(我猜),并尝试将该列表传递给一个占位符。 'executemany'工作吗? – roganjosh