我尝试使用psycopg2.extras.execute_values在单个数据库调用中插入多条记录(cursor,statement,argument_list)函数。当我有一个只有字符串或整数作为字段值的列表时,它可以工作。但是我希望id字段从postgres序列中分配。我尝试使用nextval('name_of_sequence)作为值,但它被视为字符串,因此对于我的id列无效,这是一个begint。
我尝试使用psycopg2.extras.execute_values在单个数据库调用中插入多条记录(cursor,statement,argument_list)函数。当我有一个只有字符串或整数作为字段值的列表时,它可以工作。但是我希望id字段从postgres序列中分配。我尝试使用nextval('name_of_sequence)作为值,但它被视为字符串,因此对于我的id列无效,这是一个begint。
1条答案
按热度按时间qni6mghb1#
两种方法来处理这个问题。
1)这样做:
alter <the_table> alter column id set default nextval('name_of_sequence').
那么你就不必在查询中指定id值。如果序列专用于该表。列,那么还可以:
alter sequence name_of_sequence owned by <table_name>.id;
这将创建一个依赖项,以便如果删除表,序列也将被删除。
(2)
保持序列独立,只需使用以下步骤根据需要提取值。
SQL模式
Python代码
a)常规执行
B)执行值
更新
execute()
与execute_values()
在插入10000个值时的比较示例。这是在ipython
中使用%%time
单元格魔术完成的。