为什么我无法使用QtSql(PyQT)执行SHOW PROCESSLIST?

问题描述:

我是一个Python和QT新手。我试图用PyQT4做一个小应用程序,以监督我的家用MySQL服务器,所以我的第一个想法是做经典的SHOW PROCESSLIST,解析它,并显示在一个漂亮的用户界面中。没什么大的,真的。为什么我无法使用QtSql(PyQT)执行SHOW PROCESSLIST?

但出于某种原因,这样做查询时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 &克拉= RC#-zNo3rQOo4A/MythTV的/库/ libmyth/dbutil.cpp & L = 657

我不知道什么是错的,但在最近的MySQL版本,你可以的使用information_schema.processlist

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST 
+0

那是在5.1.x中添加,我至少需要用5.0.x的工作,但谢谢无论如何! – 2009-10-19 19:11:44

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

q.exec_("SHOW PROCESSLIST;") 

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

(SRY的撞击一个老问题,它来到了,当我在寻找一个类似的问题)