PyQt5 運算元據庫

2021-09-27 13:16:12 字數 2703 閱讀 1015

1.1、單頁查詢模型

qsqltablemodel 類是乙個可以讀寫的**模型,當連線到資料庫後,使用 settable() 函式設定要查詢的表,使用 setfilter() 函式設定過濾器條件(sql 中 where 語句的條件一樣),使用 select() 函式執行查詢,使用 seteditstrategy() 函式設定「編輯策略」,編輯策略的可取值如下:

編輯策略

描述qsqltablemodel.onfieldchange

所有變更實時更新到資料庫中

qsqltablemodel.onrowchange

當使用者選擇不同的行時,在當前行進行變更

qsqltablemodel.onmanualsubmit

手動變更,不自動變更

示例**如下:

# -*- coding:utf-8 -*-

# time : 2019/10/01 下午 2:37

# author : 御承揚

# e-mail:[email protected]

# project: pyqt5

# file : dboption02.py

# @software: pycharm

import sys

from pyqt5.qtcore import

*from pyqt5.qtgui import

*from pyqt5.qtwidgets import

*from pyqt5.qtsql import

*def

initializemodel

(model)

: model.settable(

'people'

) model.seteditstrategy(qsqltablemodel.onfieldchange)

model.select(

) model.setheaderdata(

0, qt.horizontal,

"id"

) model.setheaderdata(

1, qt.horizontal,

"name"

) model.setheaderdata(

2, qt.horizontal,

"address"

)def

createview

(title, model)

: view = qtableview(

) view.setmodel(model)

view.setwindowtitle(title)

return view

defaddrow()

: ret = model.insertrows(model.rowcount(),

1)print

('insertrows=%s'

%str

(ret)

)def

findrow

(i):

delrow = i.row(

)print

('del row=%s'

%str

(delrow)

)if __name__ ==

"__main__"

: db = qsqldatabase.adddatabase(

'qsqlite'

) db.setdatabasename(

'./db/database.db'

) model = qsqltablemodel(

) delrow =-1

initializemodel(model)

view1 = createview(

"table model(view 1)"

, model)

view1.clicked.connect(findrow)

dlg = qdialog(

) layout = qvboxlayout(

) layout.addwidget(view1)

addbtn = qpushbutton(

'新增一行'

) addbtn.clicked.connect(addrow)

layout.addwidget(addbtn)

delbtn = qpushbutton(

'刪除一行'

) delbtn.clicked.connect(

lambda

: model.removerow(view1.currentindex(

).row())

) layout.addwidget(delbtn)

dlg.setlayout(layout)

dlg.setwindowtitle(

'database demo'

) dlg.setwindowicon(qicon(

"./images/python2.ico"))

dlg.resize(

430,

450)

dlg.show())

)

效果如下:

1.2、分頁查詢模型

pyqt5切換python版本 pyqt5介面切換

主要的思路就是建立兩個frame 如果有兩個以上同理 使用setvisible 函式顯示或者隱藏frame 引數是bool值 import sys from pyqt5.qtwidgets import from pyqt5.qtcore import from pyqt5.qtgui import...

pyqt5多執行緒優化 PyQt5多執行緒

您不應該向主檢視傳送乙個新的小部件 qlabel 因為它將是乙個新標籤,而不是原始標籤,您應該傳送str型別的文字class thread qthread changepixmap pyqtsignal qpixmap changelabel pyqtsignal str def run self ...

運算元據庫

python importmysqldb defmydbtest conn mysqldb.connect host localhost user root passwd sa db b4img charset utf8 cursor conn.cursor sql select from imag...