2011-07-27 95 views
0

我想使用Python PyQt將一些MySql查詢轉換爲SQLite,但似乎無法使其工作。當我運行下面的代碼時,沒有打印出任何錯誤或結果。代碼有什麼問題?QtSql將MySql查詢轉換爲SQLite

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

你並不需要在SQLite的承諾。顯然,當SQL語法出現問題時,PyQt不會給出錯誤。

1

我不知道PyQt的,但是當你使用原生的sqlite的綁定,你必須發出

conn.commit() 

當你真正要提交更改到數據庫。所以你需要在你的insert之後和你的select之前的PyQT版本。

快速瀏覽一下文檔使它看起來像PyQt的版本是

db.commit() 
+0

即使這樣做後,我仍然看到數據庫文件的大小爲0字節。 –

+0

您需要提交才能查看*事務中的結果*,但是在同一連接上,插入的數據無論如何都應該存在。 – SingleNegationElimination