pyside QSqlTableMode() 无法从 sqlite 的数据库中找到 table
pyside QSqlTableMode() cannot find table from database from sqlite
我正在使用 PySide 在 python 中获取 Qt 绑定。我遇到的问题是连接到数据库后找不到 table 名称。首先,我使用 QSqlDatabase 添加了数据库,并将名称设置为 sqlite 数据库文件。之后,我创建了一个 QSqlTableModel 并将 table 设置为我数据库中的 table 之一。当我这样做时,没有任何显示。通过调用 lastError() 函数,它表示未找到 table。我知道与数据库的连接很好,因为 db.open() returns 是正确的。我手动查看了数据库文件,其中确实有 table 具有该特定名称。我发现有趣的一件事是指向数据库的指针在 QSqlDatabase 和 QSqlTableMode() 之间是不同的。这应该发生吗?指针不同,但名称是(表示驱动程序 = ...,数据库 =...,等等)
可能是什么问题?这是我的设置方式。
db = QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName("test.db")
print str(db.open())
print str(db.database())
model = QSqlTableModel()
model.setTable("AntennaModels")
model.select()
print str(model.lastError())
这是我使用 db.database() 和 model.database()
时打印出来的内容
<PySide.QtSql.QSqlDatabase(driver=""QSQLITE"", database=""test.db"", host="""", port=-1, user="""", open=true) at 0x104bf73b0>
<PySide.QtSql.QSqlDatabase(driver=""QSQLITE"", database=""test.db"", host="""", port=-1, user="""", open=true) at 0x104bf73f8>
问题是 QSqlDatabase
没有找到正确的数据库。最初,我认为只需列出名称即可在文件的当前目录中搜索数据库。情况似乎并非如此。正如 ekhumoro 所建议的,我使用绝对路径进行设置。为了使它在不同机器之间可移植,我使用了 python 的查找文件功能来获取绝对路径,然后将数据库项附加到那里。
我正在使用 PySide 在 python 中获取 Qt 绑定。我遇到的问题是连接到数据库后找不到 table 名称。首先,我使用 QSqlDatabase 添加了数据库,并将名称设置为 sqlite 数据库文件。之后,我创建了一个 QSqlTableModel 并将 table 设置为我数据库中的 table 之一。当我这样做时,没有任何显示。通过调用 lastError() 函数,它表示未找到 table。我知道与数据库的连接很好,因为 db.open() returns 是正确的。我手动查看了数据库文件,其中确实有 table 具有该特定名称。我发现有趣的一件事是指向数据库的指针在 QSqlDatabase 和 QSqlTableMode() 之间是不同的。这应该发生吗?指针不同,但名称是(表示驱动程序 = ...,数据库 =...,等等)
可能是什么问题?这是我的设置方式。
db = QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName("test.db")
print str(db.open())
print str(db.database())
model = QSqlTableModel()
model.setTable("AntennaModels")
model.select()
print str(model.lastError())
这是我使用 db.database() 和 model.database()
时打印出来的内容<PySide.QtSql.QSqlDatabase(driver=""QSQLITE"", database=""test.db"", host="""", port=-1, user="""", open=true) at 0x104bf73b0>
<PySide.QtSql.QSqlDatabase(driver=""QSQLITE"", database=""test.db"", host="""", port=-1, user="""", open=true) at 0x104bf73f8>
问题是 QSqlDatabase
没有找到正确的数据库。最初,我认为只需列出名称即可在文件的当前目录中搜索数据库。情况似乎并非如此。正如 ekhumoro 所建议的,我使用绝对路径进行设置。为了使它在不同机器之间可移植,我使用了 python 的查找文件功能来获取绝对路径,然后将数据库项附加到那里。