这是我的插入查询
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”占位符'
我意识到我在这方面犯了错误,但我该如何解决它。模板参数有什么帮助吗?
是的,
快速执行助手文档中解释的
template
参数正是您所需要的。
psycopg2.extras.execute_values(cur, sql, argslist, template=None, page_size=100)
– 合并到 argslist 中每个项目以组成查询的片段。template
尝试这样的事情:
sql = "INSERT INTO sightings (run_id, geometry, properties) VALUES %s"
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)'
)