PyQt QSqlQuery.prepare() returns 错误
PyQt QSqlQuery.prepare() returns false
在 PyQt4 中我创建了一个 QSqlDatabase
like
slpath = 'path/to/my/db.sqlite'
db = QSqlDatabase.addDatabase('QSPATIALITE')
db.setDatabaseName(slpath)
这似乎有效。现在我尝试 UPDATE
a table layer_styles
如下:
query = QSqlQuery(db) #db cp. above
query.prepare("UPDATE layer_styles SET f_table_catalog=:path;")
query.bindValue(":path", slpath)
query.exec_()
但是query.prepare(...)
returnsfalse
。我做错了什么?
没有 built-in database driver called "QSPATIALITE", but your QGIS installation may provide a custom SpatiaLite 同名的驱动程序。此驱动程序是 sqlite 的扩展,因此您可以像这样使用它:
slpath = 'path/to/my/db.sqlite'
if QSqlDatabase.isDriverAvailable('QSPATIALITE'):
db = QSqlDatabase.addDatabase('QSPATIALITE')
else:
db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName(slpath)
if not db.open():
print('ERROR:', db.lastError().text())
如果prepare()
或exec_()
仍然失败,您可以使用query.lastError()
检查sql语句中的错误。
在 PyQt4 中我创建了一个 QSqlDatabase
like
slpath = 'path/to/my/db.sqlite'
db = QSqlDatabase.addDatabase('QSPATIALITE')
db.setDatabaseName(slpath)
这似乎有效。现在我尝试 UPDATE
a table layer_styles
如下:
query = QSqlQuery(db) #db cp. above
query.prepare("UPDATE layer_styles SET f_table_catalog=:path;")
query.bindValue(":path", slpath)
query.exec_()
但是query.prepare(...)
returnsfalse
。我做错了什么?
没有 built-in database driver called "QSPATIALITE", but your QGIS installation may provide a custom SpatiaLite 同名的驱动程序。此驱动程序是 sqlite 的扩展,因此您可以像这样使用它:
slpath = 'path/to/my/db.sqlite'
if QSqlDatabase.isDriverAvailable('QSPATIALITE'):
db = QSqlDatabase.addDatabase('QSPATIALITE')
else:
db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName(slpath)
if not db.open():
print('ERROR:', db.lastError().text())
如果prepare()
或exec_()
仍然失败,您可以使用query.lastError()
检查sql语句中的错误。