【问题标题】:Why can't I do SHOW PROCESSLIST with QtSql (PyQT)?为什么我不能用 QtSql (PyQT) 做 SHOW PROCESSLIST?
【发布时间】:2009-10-19 15:07:11
【问题描述】:

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

【问题讨论】:

    标签: python mysql qt pyqt


    【解决方案1】:

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

    SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
    

    【讨论】:

    • 这是在 5.1.x 中添加的,我至少需要使用 5.0.x,但还是谢谢你!
    【解决方案2】:

    我不知道你是否已经尝试过了,但是添加一个';'怎么样?

    q.exec_("SHOW PROCESSLIST;")
    

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

    (抱歉碰到一个老问题,当我搜索类似问题时出现了)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 2020-08-05
      • 2015-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多