Psycopg 2.7中的新execute_values方法:
data = [(1,'x'), (2,'y')]
insert_query = 'insert into t (a, b) values %s'
psycopg2.extras.execute_values (
    cursor, insert_query, data, template=None, page_size=100
)
在Psycopg 2.6中执行此操作的pythonic方法:
data = [(1,'x'), (2,'y')]
records_list_template = ','.join(['%s'] * len(data))
insert_query = 'insert into t (a, b) values {}'.format(records_list_template)
cursor.execute(insert_query, data)
说明:如果要插入的数据作为元组列表给出,例如
data = [(1,'x'), (2,'y')]
那么它已经是确切要求的格式了 
- 该子句的- values语法- insert需要一个记录列表,如
 - insert into t (a, b) values (1, 'x'),(2, 'y')
 
- Psycopg使Python适应- tuplePostgresql- record。
 
唯一必要的工作是提供一个由psycopg填充的记录列表模板
# We use the data list to be sure of the template length
records_list_template = ','.join(['%s'] * len(data))
并将其放在insert查询中
insert_query = 'insert into t (a, b) values {}'.format(records_list_template)
打印insert_query输出
insert into t (a, b) values %s,%s
现在到通常的Psycopg参数替换
cursor.execute(insert_query, data)
或者只是测试将要发送到服务器的内容
print (cursor.mogrify(insert_query, data).decode('utf8'))
输出:
insert into t (a, b) values (1, 'x'),(2, 'y')
               
              
execute策略越好。由于这个原因,我看到了大约100倍的加速!