2009-10-19 3 views
0

Je suis un débutant Python et QT. J'essaie de faire une petite application avec PyQT4 afin de superviser un serveur MySQL à la maison, donc ma première idée était de faire le SHOW PROCESSLIST classique, l'analyser, et montrer dans une jolie interface utilisateur. Rien de grand, vraiment.Pourquoi ne puis-je pas faire SHOW PROCESSLIST avec QtSql (PyQT)?

Mais pour une raison quelconque, le module QtSql ne retourne rien lors de cette requête, bien que cela fonctionne avec d'autres requêtes comme SHOW TABLES, etc

Je trouve un message ancien (2002) dans une liste de diffusion parler de ceci [1], et une référence dans le code MythTV [2], mais aucun d'entre eux ne l'explique clairement.

Voici un code:

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! 

Comme je l'ai dit, il fonctionne très bien avec d'autres requêtes (SELECT, etc.).

Est-ce que je fais quelque chose de mal? Je vous remercie!

[1]: lists.trolltech.com/qt-interest/2002-09/thread00104-0.html
[2]: & sa www.google.com/codesearch/p?hl=es = N & cd = 1 & ct = rC# -zNo3rQOo4A/MythTV/libs/libmyth/dbutil.cpp & l = 657

Répondre

1

Je ne sais pas ce qui est faux, mais dans les versions récentes de MySQL, vous pouvez Travaillez autour en utilisant information_schema.processlist:

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST 
+0

qui a été ajouté à 5.1.x, et je dois travailler avec au moins 5.0.x, mais je vous remercie en tous cas! –

0

Je ne sais pas si vous avez déjà essayé, mais qu'en est-il de l'ajout d'un ';'?

q.exec_("SHOW PROCESSLIST;") 

Je n'ai jamais travaillé avec QtSql mais certaines API MySQL ont de comportement assez étrange et j'ai rencontré ce problème avant.

(dsl pour cognant une vieille question, il est venu quand je cherchais un problème similaire)

Questions connexes