2017-02-28 9 views
1

私は少し戸惑いがあります。私はPyQt/Pythonを使ってMySqlデータベースを照会する基本的なアプリケーションを作成しています。私の知る限り、コードがでテーブルを表示するようになっている承知しているようbuiltins.AttributeError: 'str'オブジェクトに 'toString'属性がありません

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

:ここ

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」「マイク」です:ここでは、コードですデータベースが、私はエラーを取得しています 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を使うと、 'QString'や' QVariant'のようなQtクラスの変換は自動的に行われます。 OPは明らかにPython2用に書かれた古いチュートリアルに従っていますが、実際にはPython3自身を使用しています。 – ekhumoro

+0

@ echumoro ok。ありがとうございます。私の答えを編集しました。 –

関連する問題