我想检查mysql连接是否处于活动状态。如何使用MYSQLdb在Python中执行此操作。我在docs中尝试了以下内容:
conn.is_connected()
这会返回AttributeError:' Connection'对象没有属性' is_connected'。
然后我尝试了:
conn.ping(attempts=1, delay=0)
返回:TypeError:ping()不带关键字参数
怎么做?
答案 0 :(得分:2)
您指向的文档大约是mysql-connector
,而不是MySQLdb
(又名mysql-python
;嗯,有很多用于MySQL的Python DB API驱动程序)。 MySQLdb的文档位于http://mysql-python.sourceforge.net/MySQLdb.html
Connection objects in MySQLdb使用.ping()
方法使用一个参数,但没有.is_connected()
。
您正在寻找conn.ping(True)
。
答案 1 :(得分:0)
我认为你应该尝试
if conn.open:
do some code...
答案 2 :(得分:0)
实际上在MySQLdb中,更优雅的方法是不检查连接是否处于活动状态。如果mysql服务器轻松关闭连接,请检查连接是否处于活动状态也会导致异常。只需将其保留并在try except块中使用重新连接机制。
在MySQLdb中,connection.py中有一个错误处理程序,将在发生错误时使用。
$(function() // execute once the DOM has loaded
{
// wire up Add Item button click event
$("#myButton").click(function(event) //give an ID to modal button
{
event.preventDefault(); // cancel default behavior
$('#myModal').modal('show'); //give an ID to modal
//... rest of add logic
});
});
请参阅“def defaulterrorhandler(connection, cursor, errorclass, errorvalue):
"""
If cursor is not None, (errorclass, errorvalue) is appended to
cursor.messages; otherwise it is appended to
connection.messages. Then errorclass is raised with errorvalue as
the value.
You can override this with your own error handler by assigning it
to the instance.
"""
error = errorclass, errorvalue
if cursor:
cursor.messages.append(error)
else:
connection.messages.append(error)
del cursor
del connection
raise errorclass, errorvalue
”。它将关闭连接并将连接设置为None。所以只是让错误发生,然后我们重建世界。
所以你只需要在try except块中实现一个重新连接机制来处理一些问题,比如Mysql已经消失了。
答案 3 :(得分:0)
我不必使用is_connection()
我的理解是,您正在通过诸如以下的代码创建连接
conn = MySQLdb.connect(host=host, user=username, passwd=password, db=database)
如果打印dir(conn)的结果,它将显示该连接对象的所有属性和方法。当我打印时,is_connection不存在。有一个属性open
,当您的连接打开时返回1
,而在连接关闭时返回0
。我在代码中使用它来检查连接是否打开。
在交互式python控制台中进行的小测试可以帮助:
if conn.open:
print('open')
else:
print('closed')
此外,如果您阅读文档:
open = <member 'open' of '_mysql.connection' objects>
True if connection is open
http://www.mikusa.com/python-mysql-docs/docs/MySQLdb.connections.html