2017-02-28 105 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。編輯我的答案。 –

相關問題