pandas1.5.3
和sqlalchemy2.0.1
的代码不再工作,令人惊讶的是,它没有引发任何错误,代码静默通过:
# python 3.10.6
import pandas as pd # 1.5.3
import psycopg2 # '2.9.5 (dt dec pq3 ext lo64)'
from sqlalchemy import create_engine # 2.0.1
def connector():
return psycopg2.connect(**DB_PARAMS)
engine = create_engine('postgresql+psycopg2://', creator=connector)
with engine.connect() as connection:
df.to_sql(
name='my_table',
con=connection,
if_exists='replace',
index=False,
)
目前,使用sqlalchemy 2.0.1
时,我的表不再填充DataFrame内容。
而它被正确地填充了1.4.45
版本的sqlalchemy。
编辑
显然,当我***不***使用上下文管理器时,它可以工作:
connection = engine.connect()
res.to_sql(
name='my_table',
con=connection,
if_exists='replace',
index=False
)
Out[2]: 133 # <- wondering what is this return code '133' here?
connection.commit()
connection.close()
我怎样才能让它与上下文管理器(又名with
语句)一起工作呢?
1条答案
按热度按时间bkhjykvo1#
您正在使用的上下文管理器在退出时回滚,而使用
engine.begin()
,它将提交。