我在跑步:
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, b, c)
def insert_to_table():
request = "INSERT INTO tablename " \
"(a, b, 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)
PostgreSQL 10.10(Ubuntu10.10-0ubuntu0.18.04.1)在x86泷u 64-pc-linux-gnu上,由gcc(Ubuntu7.4.0-1ubuntu1~18.04.1)7.4.0编译,64位
默认情况下,conn将在脱离with语句后提交。你知道吗
因此,与其这样做:
做
相关问题 更多 >
编程相关推荐