2017-02-28 93 views
1

我有点小白,我一直在下面的教程创建与PyQt的/ Python的一个基本的应用程序来查询MySQL数据库。下面是代码:builtins.AttributeError:“海峡”对象有没有属性“的toString”

import sys 

from PyQt4 import QtCore, QtGui, QtSql 

from PyQt4.QtCore import * 
from PyQt4.QtGui import * 
from PyQt4.QtSql import * 


app = QApplication(sys.argv) 
w = QTextBrowser() 

# DB type, host, user, password... 
db = QSqlDatabase.addDatabase("QMYSQL"); 
db.setHostName("localhost") 
db.setDatabaseName("microphones") 
db.setUserName("root") 
db.setPassword("") 
ok = db.open() 

# True if connected 
if ok: 
    w.insertHtml('Connected to MySQL<br />') 
else: 
    w.insertHtml('ERROR connecting to MySQL<br />') 

# do a query "on" a DB connection 
query = QSqlQuery(db) 
if query.exec_("SHOW TABLES"): 
    w.insertHtml('<br />') 
    while query.next(): 
     table = query.value(0).toString() 
     w.insertHtml('%s<br />' % table) 

    w.insertHtml('<br />') 
    w.insertHtml('TOTAL %s TABLES' % query.size()) 

w.show() 
sys.exit(app.exec_()) 

这里是在数据库中的表'ebay_microphones“麦克风”:

ID,product_name,item_number,price 
1,"AKG C14",564564564,32 
2,"Samsung ",454564545,99 
3,"Shure ",564687784,80 

据我所知的代码应该显示在表数据库,但我得到的错误builtins.AttributeError: 'str' object has no attribute 'toString'

任何人都可以点我在正确的方向,为什么我收到此错误? 由于

+1

'表= query.value(0)的ToString()'该行应该是 - '表= STR(query.value(0) )' –

+0

哇,感谢您的快速反应,这是工作!你认为写这篇文章的人是从以前的版本使用旧的语法还是错误的? – neilH

+0

这不是一个较老的语法。只是错误的。 –

回答

1

只要改变该线 - table = query.value(0).toString()到此 - table = query.value(0)

+0

由于追溯清楚地显示retun值是'str',因此尝试用'str()'重新转换它没有意义。另外,说没有'toString()'是错误的。当在Python2中使用PyQt4时,'query.value(0)'将返回一个'QVariant',它具有该方法。但是在Python3中使用PyQt4时,Qt类(例如'QString'和'QVariant')的转换会自动完成。 OP显然是遵循一个为Python2编写的旧教程,但实际上是使用Python3本身。 – ekhumoro

+0

@ekhumoro ok.Thanks。编辑我的答案。 –

相关问题