如何在 pyqt 中将数据库文件中的内容显示到控制台中



我正在使用 PyCharm 编辑器 2017.3。我的蟒蛇版本是3.4
我的主要目标是将内容从数据库文件加载到 tableView 中,但在尝试之前,我尝试将内容从测试数据库文件加载到 python 控制台。

在这里,我使用称为QSQL的PyQt4内置插件

from PyQt4.QtGui import *
site_pack_path = "C:\Python34\Lib\site-packages"
QApplication.addLibraryPath('{0}\PyQt4\plugins'.format(site_pack_path))
from PyQt4.QtSql import *
import sys

然后,我创建了一个数据库文件,并尝试将内容从中加载到控制台中。下面提到的所有内容都是用相同的函数编写的。

db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('sports.db')
if not db.open():
    QMessageBox.critical("Cannot open database")
    return False
query = QSqlQuery()
query.exec_("create table sportsmen(id int primary key, "
            "firstname varchar(20), lastname varchar(20))")
query.exec_("insert into sportsmen values(101, 'Roger2', 'Federer')")
query.exec_("insert into sportsmen values(102, 'Christiano', 'Ronaldo')")
query.exec_("insert into sportsmen values(103, 'Ussain', 'Bolt')")
query.exec_("insert into sportsmen values(104, 'Sachin', 'Tendulkar')")
query.exec_("insert into sportsmen values(105, 'Saina', 'Nehwal')")


print(query.exec_("SELECT * FROM sportsmen"))
return True

虽然创建了名为 sports.db 的数据库文件,甚至填充了测试数据,但我无法将内容从那里获取到我的控制台中。
控制台未显示错误并打印 True

根据文档:

bool QSqlQuery.exec_(self, QString query(

在查询中执行 SQL。返回 true,如果查询成功,则将查询状态设置为活动;否则返回假。查询字符串必须使用适用于所查询的 SQL 数据库(例如,标准 SQL(的语法。

[...]

也就是说,它返回查询的状态,如果我们想获取值,我们必须使用 query.value(( 传递给它我们想要获取的列((,此外只要有数据,next(( 方法就是真的。

if query.exec_("SELECT * FROM sportsmen"):
    rec = query.record()
    while query.next():
        for ix in range(rec.count()):
            val = query.value(ix)
            print(rec.fieldName(ix), val)
else:
    print(query.lastError().text())

输出:

id 101
firstname Roger2
lastname Federer
id 102
firstname Christiano
lastname Ronaldo
id 103
firstname Ussain
lastname Bolt
id 104
firstname Sachin
lastname Tendulkar
id 105
firstname Saina
lastname Nehwal

相关内容

  • 没有找到相关文章

最新更新