2011-09-13 5 views
3

私は最近、_ _mysqlモジュールからPyQtのQSqlに変更する必要があることを発見しましたが、どこから起動するのかはわかりません。私がやりたいことは(今のところ)データベースから読み込んで結果を出力します。これは私が得た最も遠いですが、私は "ドライバがロードされていない"ドライバがロードされていないというエラーがquery.exec_()関数から返され続けています。QSqlはデータベースの接続と読み取りの例ですか? - ドライバがロードされていません

助けてください!

db = QSqlDatabase.addDatabase("QMYSQL") 

db.setHostName (db_host) 
db.setUserName (db_user) 
db.setPassword (db_passwd) 
db.setDatabaseName (db_db) 
db.setPort (db_port) 

db.setConnectOptions("CLIENT_SSL=1;CLIENT_IGNORE_SPACE=1") 
db.open() 

defaultDB = QSqlDatabase.database() 
query = QSqlQuery("SELECT * FROM Users") 

qe = query.exec_() 
print "query exec" , query.exec_() 
if not qe:    # if error 
    print QSqlQuery.lastError(query).text() 
else:     # else display returned values 
    while query.next(): 
     print "query value" , query.value(0).toString() 


db.close() 

答えて

6

AAAAHH !!!これはいつも起こります! 1日の問題で座って、最終的に投稿してそれについて質問し、問題を投稿してから約30分後に解決策を見つけてください!

興味のある方は、this guyと同じ問題がありました。

基本的に、あなたのSQLコードが実行される前にはQApplicationのインスタンスを作成する必要があります...すなわち

# this little monkey has to be here 
app = QApplication(sys.argv) 


# rest of the code 
db = QSqlDatabase.addDatabase("QMYSQL") 

db.setHostName (db_host) 
db.setUserName (db_user) 
db.setPassword (db_passwd) 
db.setDatabaseName (db_db) 
db.setPort (db_port) 

db.setConnectOptions("CLIENT_SSL=1;CLIENT_IGNORE_SPACE=1") 
db.open() 

defaultDB = QSqlDatabase.database() 
query = QSqlQuery("SELECT * FROM Users") 

qe = query.exec_() 
print "query exec" , query.exec_() 
if not qe:    # if error 
    print QSqlQuery.lastError(query).text() 
else:     # else display returned values 
    while query.next(): 
     print "query value" , query.value(0).toString() 


db.close() 
関連する問題