2015-10-04 69 views
5

我正在使用SQLAlchemy连接将一个熊猫DataFrame写入MySQL数据库。早在我的代码创建一个SQLAlchemy的发动机:有没有办法测试一个SQLAlchemy连接?

engine = create_my_sqlalchemy_connection() 

我执行某些查询,做一些计算,然后尝试使用相同的引擎写入数据库稍后:

df.to_sql('my_table', engine, if_exists='append', index=False) 

有时候这是有效的,有时在代码准备写入数据库时​​连接就会丢失,并且出现错误。

我可以做一个尝试,但如果需要创建一个新的连接:

try: 
    df.to_sql('my_table', engine, if_exists='append', index=False) 
except: 
    engine = create_my_sqlalchemy_connection() 
    df.to_sql('my_table', engine, if_exists='append', index=False) 

不过,我想我会伸手去看看有没有人有更好的办法知道(例如,如果有一些SQLAlchemy方法,我不知道用于测试以查看连接是否仍然存在)。

+1

你知道“稍后”是什么吗?秒,分钟,小时?到目前为止,我从来没有遇到代码运行几分钟的问题,但是如果df非常大,我想它可能会与更长的intervalls –

+0

有所不同,您可以循环访问df_chunks并在它们上调用to_sql()? – s5s

回答

0

值得尝试Connection.closed属性。

if engine.closed: 
    engine = create_my_sqlalchemy_connection() 
    df.to_sql('my_table', engine, if_exists='append', index=False) 
else: 
    df.to_sql('my_table', engine, if_exists='append', index=False) 
相关问题