【问题标题】:Why MySQLdb gets the duplicated db connections为什么 MySQLdb 获取重复的数据库连接
【发布时间】:2016-02-18 01:35:33
【问题描述】:

我使用 MySQLdb 作为我的 python-mysql 连接。我的测试代码如下:

for i in range(6):
   db = MySQLdb.connect('localhost','user','passwd','test'))
   print db

我得到的结果如下:

_mysql.connection open to localhost at 1bba010
_mysql.connection open to localhost at 1c1ba90
_mysql.connection open to localhost at **1c34fa0**
_mysql.connection open to localhost at **1c3cdb0**
_mysql.connection open to localhost at **1c34fa0**
_mysql.connection open to localhost at **1c3cdb0**

您会发现最后两个连接对象是重复的。当我使用多进程查询 mysql 时,这是一个问题。即,当一个进程完成工作时,它将关闭连接,而其他进程仍在使用相同的数据库连接,请问我应该如何解决这个问题。

【问题讨论】:

    标签: python mysql mysql-python


    【解决方案1】:

    内存位置的重用不是问题。在您的测试程序中,您正在关闭连接并释放对象。这意味着内存被释放,并且可以重复使用。然后你创建一个新的连接对象,并且再次使用内存位置。

    地址交替,因为对象 1 直到对象 2 创建后才被释放,对象 2 直到对象 3 创建后才被释放,依此类推。

    【讨论】:

    • 我删除了 db.close(),我仍然得到相同的连接对象。
    • 我正在使用多进程查询mysql,每个进程我创建一个新连接,但它们有重复。当先前的进程关闭相同的连接时,它会导致异常。我很困惑,MySQLdb中有默认连接池吗?如果是这样,我真的不想使用它。
    • db.close 不是有趣的部分。释放对象时,连接可能会隐式关闭。
    猜你喜欢
    • 2017-01-24
    • 2018-05-23
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 2012-02-26
    • 2016-01-20
    • 2016-08-14
    • 2015-07-02
    相关资源
    最近更新 更多