2011-07-27 96 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