psycopg2.extras.execute_values为几何数据插入多行

时间:2018-04-09 10:31:58

标签: python psycopg2

这是我的插入查询

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'占位符'

我意识到我的错误,但我怎么能解决它。有没有办法模板参数可以提供任何帮助。

1 个答案:

答案 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)')