PyQt5之SQLite数据库操作(1)

连接数据库

导入库文件

from PyQt5 import QtSql
from PyQt5.QtSql import QSqlQuery

QtSql类即QT中的QSqlDatabase类,用于处理与数据库的连接

QSqlQuery类提供了执行和操作SQL语句打方法


第一步连接sqlite数据库

database = QtSql.QSqlDatabase.addDatabase('QSQLITE')
database.setDatabaseName('test.db')
没有test.db这个文件的时候则会在当前目录新建一个test.db文件

打开数据库,打开成功返回True

database.open()


新建表

建立一个名为student的表,包含id,name,age三个属性,其中ID为主键

query.prepare('create table student (id int primary key, name varchar(30),age int)')
if not query.exec_():
    query.lastError()
else:
    print('create a table')

插入数据

addBindValue()将值添加到列表中,调用顺序决定添加的顺序
insert_sql = 'insert into student values (?,?,?)'
query.prepare(insert_sql)
query.addBindValue(4)
query.addBindValue('test3')
query.addBindValue(1)
if not query.exec_():
    print(query.lastError())
else:
    print('inserted')


查询

查询返回数据使用value(int)函数,例如select id,name,age from student   value(0)等于返回id属性的值,value(2)等于age属性

exec_()查询成功返回true查询 否则返回false

query.prepare('select id,name,age from student')
if not query.exec_():
    query.lastError()
else:
    while query.next():
        id = query.value(0)
        name = query.value(1)
        age = query.value(2)
        print(id,name,age)

可以通过record().indexOf(str)来获取索引值,

if query.exec('select id ,name,age from student'):
    id_index = query.record().indexOf('id')
    name_index = query.record().indexOf('name')
    age_index = query.record().indexOf('age')
    while query.next():
        id = query.value(id_index)
        name = query.value(name_index)
        age = query.value(age_index)
        print(id, name, age)




一:使用exec()操作

指令执行成功则 exec_()会返回True并把查询状态设为活跃状态,否则返回false

另外对于SQLite,查询字符串一次只能包含一条语句。如果给出多个语句,则函数返回false

if query.exec('select id ,name,age from student'):
    while query.next():
        id = query.value(0)
        name = query.value(1)
        age = query.value(2)
        print(id, name, age)


二:execBatch()操作

这个函数是批处理之前准备好的指令,如果数据库不支持批处理他会自己调用exec()来模拟

query.prepare('insert into student values (?,?,?)')
query.addBindValue([6,7,8])
query.addBindValue(['test5','test6','test7'])
query.addBindValue([1,1,1])
if query.execBatch():
    print("inserted ")

三:executedQuery()返回最后一个执行成功的指令

if query.exec('select id ,name,age from student'):
    while query.next():
        id = query.value(0)
        name = query.value(1)
        age = query.value(2)
        print(id, name, age)
        
print(query.executedQuery())
执行结果为:select id ,name,age from student


四: 其他

finish()终止当前的操作

isActive()返回当前是否处于活跃状态
isNull(int field)返回当前是否不活跃

isSelect()返回是不是一个查询语句

next()检索结果中的下一条记录(如果可用),并将查询放在检索到的记录上。请注意,结果必须处于活动状态,并且在调用此函数之前,isSelect()必须返回true,否则它将不执行任何操作并返回false。


指令执行成功则 exec_()会返回True并把查询状态设为活跃状态,否则返回false
  • 4
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明
PyQt5是一个Python编程语言的工具包,用于创建图形用户界面(GUI)。SQLite是一个轻量级的嵌入式数据库引擎,它可以轻松地集成到应用程序。QTableWidget是PyQt5一个用于显示和编辑二维表格数据的小部件。 在PyQt5,使用QTableWidget来显示SQLite数据库的数据,可以按照以下步骤进行操作: 1. 首先,导入需要的模块:`from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem` 并连接到SQLite数据库:`import sqlite3` 2. 创建一个继承自QMainWindow的自定义窗口类,并在窗口的初始化方法设置布局等属性。 3. 创建一个QTableWidget实例,并设置它的行数和列数:`table = QTableWidget(row_count, col_count)` 4. 连接到SQLite数据库:`conn = sqlite3.connect('your_database.db')` 5. 创建一个游标对象:`cursor = conn.cursor()` 6. 执行SQL查询语句获取数据库的数据:`cursor.execute('SELECT * FROM your_table')` 7. 使用fetchall()方法获取查询结果:`data = cursor.fetchall()` 8. 遍历查询结果,并将数据逐行添加到QTableWidget:`for row_number, row_data in enumerate(data):` `for column_number, column_data in enumerate(row_data):` `table.setItem(row_number, column_number, QTableWidgetItem(str(column_data)))` 9. 最后,关闭数据库连接:`conn.close()` 10. 将QTableWidget添加到窗口的主布局:`self.setCentralWidget(table)` 通过以上步骤,就可以使用PyQt5SQLite数据库来显示自定义表格数据。在需要时,可以根据需求对QTableWidget进行自定义样式的设置,例如设置列宽、行高、表头等。 希望以上回答对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值