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

问题描述 投票:0回答:1

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

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

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

python sql pyqt4 qtableview qsqlquery
1个回答
1
投票

根据docs

bool QSqlQuery.exec_(self,QString查询)

在查询中执行SQL。如果查询成功,则返回true并将查询状态设置为活动状态;否则返回false。查询字符串必须使用适合于要查询的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
© www.soinside.com 2019 - 2024. All rights reserved.