加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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个小时多的探索,终于大功告成。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有