2011-07-27 9 views
0

Python PyQtを使用して、いくつかのMySqlクエリをSQLiteに変換しようとしていますが、動作しないようです。次のコードを実行すると、何も出力されず、エラーも結果も出力されません。コードの何が間違っていますか?QtSqlはSQLiteへのMySqlクエリを変換します

db = QSqlDatabase.addDatabase("QSQLITE") 
db.setDatabaseName("TEST") 
if not db.open(): 
    QMessageBox.warning(None, "Database", 
         QString("Database Error: %1").arg(db.lastError().text())) 
    sys.exit(1) 

query = QSqlQuery() 

query.exec_("""CREATE TABLE IF NOT EXISTS CollectStatus (
         id INTEGER NOT NULL AUTO_INCREMENT , 
         status TEXT NOT NULL , 
         PRIMARY KEY (id) , 
         UNIQUE INDEX status_UNIQUE (status ASC));""") 

query.exec_("INSERT INTO CollectStatus (status) VALUES (1)") 
query.exec_("SELECT status FROM CollectStatus") 
while query.next(): 
    print(query.value(status).toString()[0]) 

db.close() 

答えて

0

です。明らかに、PyQtはSQL構文に問題があるときはエラーを出しません。

1

私はPyQtは知りませんが、あなたはネイティブsqliteのバインディングを使用しているとき、あなたが実際にデータベースに変更をコミットしたい場合

conn.commit() 

を発行する必要があります。したがって、あなたのinsertの後で、あなたのselectの前にPyQTバージョンが必要です。ドキュメントで

一目でそれがPyQtはバージョンのように見えるあなたはSQLiteのにコミットする必要はありません

db.commit() 
+0

これを実行しても、データベースファイルがまだ0バイトのサイズになっています。 –

+0

結果*トランザクションを見るにはコミットする必要がありますが、同じ接続では挿入されたデータが存在するはずです。 – SingleNegationElimination

関連する問題