这是我的插入查询
sql = "INSERT INTO sightings (run_id, geometry, properties)
VALUES(%s, ST_MakePoint(%s, %s), %s);"
1)run_id是一个内部uuid
2)几何 - 这是地理位置对象
3)属性是一个JSON对象
在运行psycopg2.extras.execute_values(cur, sql, listOfTuples)
时出现错误消息:
查询包含多个'%s'占位符'
我意识到我的错误,但我怎么能解决它。有没有办法模板参数可以提供任何帮助。
答案 0 :(得分:2)
是的,Fast execution helpers文档中解释的模板参数完全符合您的需要。
psycopg2.extras.execute_values(cur,sql,argslist,template = None,page_size = 100)
模板 - 要合并到argslist中的每个项目的片段,以组成查询。
尝试这样的事情:
sql = "INSERT INTO sightings (run_id, geometry, properties) VALUES %"
user_id = 1
lnglat = (20.0, 40.0)
props = {"foo": "bar"}
listOfTuples = [(user_id,) + lnglat + (json.dumps(props),)]
# lisftOfTuples = [(1, 20.0, 40.0, '{"foo": "bar"}')]
psycopg2.extras.execute_values(cur, sql, listOfTuples, template='(%s, st_makepoint(%s, %s), %s)')