- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
from PyQt4 import QtGui,QtSql
def start_prestige():
m_name = "Prestige"
m_desc = " The Prestige is a 2006 Britis-American mystery thriller film directed by Christopher Nolan, from a screenplay adapted by Nolan and his brother Jonathan from Christopher Priest's 1995\n\n novel of the same name." \
" Its story follows Robert Angier and Alfred Borden, rival stage magicians in London at the end of the 19th century. Obsessed with creating the best stage illusion, they\n\n engage in competitive one-upmanship with tragic results." \
" The film stars Hugh Jackman as Robert Angier, Christian Bale as Alfred Borden, and David Bowie as Nikola Tesla. It also stars Scarlett\n\nJohansson, Michael Caine, Piper Perabo, Andy Serkis, and Rebecca Hall." \
" The film reunites Nolan with actors Bale and Caine from Batman Begins and returning cinematographer Wally Pfister,\n\n production designer Nathan Crowley, film score composer David Julyan, and editor Lee Smith."
m_director = "Christopher Nolan"
cast = "Hugh Jackman , Christian Bale , Scarlett Johansson , Michael Caine"
duration = 130
something(789, m_name, m_director, cast, m_desc, duration)
def something(id, title, director, cast, description, duration):
db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('db/test.db')
if not db.open():
QtGui.QMessageBox.critical(None, QtGui.qApp.tr("Cannot open database"),
QtGui.qApp.tr("Unable to establish a database connection.\n"
"This example needs SQLite support. Please read "
"the Qt SQL driver documentation for information "
"how to build it.\n\n" "Click Cancel to exit."),
QtGui.QMessageBox.Cancel)
return False
query = QtSql.QSqlQuery()
query.exec_(
"create table movie(id INT PRIMARY KEY , title VARCHAR(20), description VARCHAR(1000), director VARCHAR(100), cast VARCHAR(100), duration_min INT")
query.prepare("INSERT INTO movie VALUES(?,?,?,?,?,?)")
query.addBindValue(id, title, description, director, cast, duration)
if query.exec_():
db.commit()
start_prestige()
这里的问题是我无法将值插入数据库,因为它显示类型错误:
TypeError: QSqlQuery.addBindValue(QVariant, QSql.ParamType type=QSql.In): argument 2 has unexpected type 'str'
最佳答案
您一次只能添加一个个绑定(bind)值。所以你必须这样做:
query.prepare("INSERT INTO movie VALUES(?,?,?,?,?,?)")
query.addBindValue(id)
query.addBindValue(title)
query.addBindValue(description)
query.addBindValue(director)
query.addBindValue(cast)
query.addBindValue(duration)
或者类似的东西:
def something(*args):
...
query.prepare("INSERT INTO movie VALUES(?,?,?,?,?,?)")
for arg in args:
query.addBindValue(arg)
addBindValue
调用的顺序必须与 SQL 语句中占位符的数量和顺序匹配。
关于python - 无法将值插入 QSqlDatabase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46975381/
我已经创建了一个肯定存在于项目目录中的数据库,我可以使用 DBBrowser 和 Ubuntu 终端打开它。它们都显示数据库包含“电影”表,但我在 C++ 中的代码说找不到这样的表 QSqlDatab
我只有一个与数据库的连接,用于我正在开发的库存应用程序。 我现在正在做的是每次需要对 dB 进行查询时调用 open(),然后执行 close()。 这样做比仅仅打开连接并保持打开状态有什么好处吗?
我需要在本地系统上存储一些值并稍后以表格格式访问它,所以我选择了 QSqlDatabase。首先我必须检查数据库是否已经存在。但是使用下面的代码我总是收到消息 Data base not exist
from PyQt4 import QtGui,QtSql def start_prestige(): m_name = "Prestige" m_desc = "
为什么下面的代码打印的是 true 而不是 false? int main(int argc, char *argv[]) { QApplication a(argc, argv);
基于 Qt 文档: A connection can only be used from within the thread that created it. Moving connections b
我正在运行来自 http://www.python.org/getit/ 的 python 2.7.3 (python-2.7.3.amd64.msi) 我使用的安装程序来自:http://www.l
我正在使用 QSqlDatabase 并试图找到一种方法来终止正在运行的查询(这是我正在编写的 sql 客户端的一种必要功能) 有没有办法获取正在运行的查询的 ID? (计划只是在另一个连接中执行 k
很多QSqlDatabase的教程都是这样启动数据库的: QSqlDatabase cn = QSqlDatabase::addDatabase("QSQLITE",QString::number(i
我有一个 Qt 应用程序,它(本质上)使用 QSqlDatabase 创建一个 QMYSQL 数据库连接,创建一个 gridPopulator 实例来填充一个 QTableView 带有(显然)来自数
处理 QSqlDatabase 连接的正确方法是什么? 在我的程序中我是这样做的: DatabaseConnector *databaseConnector = 0; try { databa
我有依赖类和独立类,我需要在这些类中创建数据库连接。据我了解Qt documentation ,如果我以默认方式创建连接,则所有连接都使用相同的连接。 我应该为不同的类创建不同的数据库连接,还是应该使
我对手册感到困惑,我应该这样工作吗: { QSqlDatabase db = QSqlDatabase::addDatabase (...); QSqlQuery query (db); que
我有一个多年来一直运行良好的功能,开始 QSqlDatabase DBUtil :: basic_open (const QString & path) { static int connec
在我的开发电脑中,“QSqlDatabase ob”行不会崩溃并且工作得很好。但是在一台新的电脑上移动了 exe,它崩溃了,但是如果我注释上面的行并再次准备 exe,它就可以正常运行。 所以我在新电脑
我刚刚完成了 QT CRUD 应用程序的开发。我使用 SQLite 将信息本地存储在运行应用程序的磁盘中。这样我的应用程序就可以正常工作了。 但是该应用程序缺少中央数据库服务器。因此,我首先安装 My
将 Qt 从 5.5 更新到 5.6 后,QSqlDatabase:open 始终返回 true - 即使主机不可访问和/或用户名/密码/数据库设置设置为无意义。 测试代码: QSqlDatabase
文件对此只字不提。我只是想知道 exec() 调用是否阻塞?意思是,如果我先创建一个表,然后启动一个线程,在线程中我调用一个对我刚创建的表的查询。 是否有可能在实际建表之前调用查询? 最佳答案 是的,
我正在尝试使用 .open() 函数在 QT 中打开一个 sqlite 数据库文件,如果文件没有退出,.open() 不会返回 false,它只是在给定的位置创建一个新文件目录。我的代码: QSqlD
我正在做一个使用 QSqlDatabase 的项目。现在我正在使用 QtConcurrent (QFuture) 来执行任何 SQL 命令。 现在,使用 QFuture 运行的每个新命令都会创建新的
我是一名优秀的程序员,十分优秀!