我正在跑步:
def db_connect():
conn = psycopg2.connect(
host=host,database=database,user=user,password=password
)
return conn
data_to_insert = []
for a,b,c in data_source: # len(data_source) > 100000
data_to_insert.append(a,c)
def insert_to_table():
request = "INSERT INTO tablename " \
"(a,c) " \
"VALUES " \
"%s "
do_commit = False
with db_connect() as conn:
with conn.cursor() as cur:
psycopg2.extras.execute_values(cur,request,data_to_insert,template=None)
if do_commit:
conn.commit() # this line could be completely omitted
仍然提交。有可能避免这种情况吗?如果我没记错的话,其他cur.execute()
等较慢的处理方式也没有问题。
psycopg2.__version__
是2.8.2 (dt dec pq3 ext lo64)
x86_64-pc-linux-gnu上的PostgreSQL 10.10(Ubuntu 10.10-0ubuntu0.18.04.1),由gcc(Ubuntu 7.4.0-1ubuntu1〜18.04.1)7.4.0,64位编译