我正在使用pyqt编写一个简单的gui并尝试更新我的数据库到目前为止没有任何运气。我是qt,数据库以及python的新手;)所以我不明白我的代码有什么问题,也许有些人可以帮助我一点点。
使用python(3)和sqltie3时,我可以像这样更新我的数据库:
cur.execute('''UPDATE news SET Raw=? WHERE id=?''', (raw, news_id))
但是使用pyqt它只能这样工作:
query = QSqlQuery()
query.exec_("UPDATE news SET Raw = 'test' WHERE Id = 9")
我试过了:
query.exec_("UPDATE news SET Raw = ? WHERE Id = ?", (raw, news_id))
导致此错误的原因是什么:
TypeError: arguments did not match any overloaded call:
QSqlQuery.exec_(str): too many arguments
QSqlQuery.exec_(): too many arguments
在用qt编写快速gui编程的书中,他正在做这样的查询(不完全是这样,但我试图改编它):
query.exec_('''UPDATE news SET Raw={0} WHERE id={1}'''.format(raw, news_id))
它似乎没有做任何事情。
和(似乎也没有做任何事情):
raw = 'test'
query.prepare("UPDATE news SET (Raw) VALUES (:raw) WHERE Id = 9 ")
query.bindValue(":raw", raw)
#query.bindValue(":news_id", 9)
query.exec_()
我在这里和其他地方找到的其他一些东西,但到目前为止没有运气。
答案 0 :(得分:1)
您似乎还没有尝试过应该如下的正确语法:
query.prepare(QString("UPDATE news SET Raw = :value WHERE id = :id "));
query.bindValue(":value", raw);
query.bindValue(":id", news_id);