我是Python和QT的新手。我正在尝试用PyQT4做一个小应用程序来监督我的家庭MySQL服务器,所以我的第一个想法是做经典的SHOW PROCESSLIST
,解析它,并在一个漂亮的UI中显示。没什么大不了的,真的。
但由于某种原因,QtSql模块在执行此查询时不返回任何内容,尽管它适用于其他查询,如SHOW TABLES
等
我在一个邮件列表中发现了一条旧的(2002)消息,谈论了这个[1],以及MythTV代码[2]中的一个参考,但没有一个明确地解释它。
以下是一些代码:
db = QSqlDatabase.addDatabase('QMYSQL3') # tried with QMYSQL too
db.setHostName(host)
db.setDatabaseName(dbname)
db.setUserName(user)
db.setPassword(password)
db.open()
q = QSqlQuery(db)
q.exec_("SHOW PROCESSLIST")
print q.size() # returns -1!
正如我所说,它适用于其他查询(SELECT等)。
我做错了吗?谢谢!
[1]:lists.trolltech.com/qt-interest/2002-09/thread00104-0.html
[2]:www.google.com/codesearch/p?hl=es&sa=N&cd=1&ct=rc#-zNo3rQOo4A/mythtv/libs/libmyth/dbutil.cpp&l=657
答案 0 :(得分:1)
我不知道出了什么问题,但在最近的MySQL版本中,你可以使用information_schema.processlist来解决它:
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
答案 1 :(得分:0)
我不知道你是否已经尝试过这个,但是添加一个';'呢?
q.exec_("SHOW PROCESSLIST;")
我从未使用过QtSQL,但是有些MySQL API确实有很奇怪的行为,我之前遇到过这个问题。
(为了碰到一个老问题,我在寻找类似的问题时出现了问题)