PyQt5之SQLite資料庫操作(1)

2022-09-16 00:18:09 字數 3196 閱讀 1173

導入庫檔案

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

PyQt5之SQLite資料庫操作(1)

導入庫檔案 from pyqt5 import qtsql from pyqt5.qtsql import qsqlquery qtsql類即qt中的qsqldatabase類,用於處理與資料庫的連線 qsqlquery類提供了執行和操作sql語句打方法 第一步連線sqlite資料庫 databas...

PyQt5之QListView列表資料

qlistview類用於展示資料,它的子類是qlistwidget。qlistview是基於模型的,需要程式來建立模型,然後再儲存資料。方法 描述setmodel 用來設定view所關聯的model,可以使用python原生的list作為資料來源model selecteditem 選中model中...

PyQt5 運算元據庫

1.1 單頁查詢模型 qsqltablemodel 類是乙個可以讀寫的 模型,當連線到資料庫後,使用 settable 函式設定要查詢的表,使用 setfilter 函式設定過濾器條件 sql 中 where 語句的條件一樣 使用 select 函式執行查詢,使用 seteditstrategy 函...