为什么我不能用QtSql(PyQT)做SHOW PROCESSLIST?

时间:2009-10-19 15:07:12

标签: python mysql qt pyqt

我是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

2 个答案:

答案 0 :(得分:1)

我不知道出了什么问题,但在最近的MySQL版本中,你可以使用information_schema.processlist来解决它:

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST

答案 1 :(得分:0)

我不知道你是否已经尝试过这个,但是添加一个';'呢?

q.exec_("SHOW PROCESSLIST;")

我从未使用过QtSQL,但是有些MySQL API确实有很奇怪的行为,我之前遇到过这个问题。

(为了碰到一个老问题,我在寻找类似的问题时出现了问题)