python如何正确关闭数据库的链接,尤其sqlalchemy connection in MySQL
(2018-01-29 17:01:59)分类: python |
现在,基本上大家都采用python3。而python3中,用的较多的模块是sqlalchemy
,来链接mysql。然而,一般的例子中都没有涉及关闭链接。
例如:
conn = create_engine('mysql+pymysql:user:passwd@host:port/db?charset=etf-8')
try:
dataIn2File.to_sql(table_name,con=conn,if_exists='append',index=False)
except
Exception as ee:
logger.error("fileToMysql fialed",ee)
traceback.print_exc()
以上代码就没有关闭过conn,导致数据库的链接越来越多,最后无法新建链接。
查询过相关知识,发现了以下两种方式:
conn = create_engine('mysql+pymysql:user:passwd@host:port/db?charset=etf-8')
con = conn.connect()
try:
dataIn2File.to_sql(table_name,con=con,if_exists='append',index=False)
except
Exception as ee:
logger.error("fileToMysql fialed",ee)
traceback.print_exc()
finally:
con.close()
或者
conn = create_engine('mysql+pymysql:user:passwd@host:port/db?charset=etf-8')
con = conn.connect()
try:
with con:
dataIn2File.to_sql(table_name,con=con,if_exists='append',index=False)
except
Exception as ee:
logger.error("fileToMysql fialed",ee)
traceback.print_exc()
finally:
con.close()
然而,事实上,链接依旧没有关闭。若要真正关闭链接,则需要采用:conn.dispose()
conn = create_engine('mysql+pymysql:user:passwd@host:port/db?charset=etf-8')
try:
with con:
dataIn2File.to_sql(table_name,con=conn,if_exists='append',index=False)
except
Exception as ee:
logger.error("fileToMysql fialed",ee)
traceback.print_exc()
finally:
conn.dispose()
经过1个小时多的探索,终于大功告成。
例如:
conn = create_engine('mysql+pymysql:user:passwd@host:port/db?charset=etf-8')
以上代码就没有关闭过conn,导致数据库的链接越来越多,最后无法新建链接。
查询过相关知识,发现了以下两种方式:
conn = create_engine('mysql+pymysql:user:passwd@host:port/db?charset=etf-8')
con = conn.connect()
或者
conn = create_engine('mysql+pymysql:user:passwd@host:port/db?charset=etf-8')
con = conn.connect()
然而,事实上,链接依旧没有关闭。若要真正关闭链接,则需要采用:conn.dispose()
conn = create_engine('mysql+pymysql:user:passwd@host:port/db?charset=etf-8')
经过1个小时多的探索,终于大功告成。