欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PyQt中使用QtSql連接MySql數(shù)據(jù)庫的方法

 更新時(shí)間:2020年07月28日 08:30:28   作者:originalMemory  
這篇文章主要介紹了PyQt中使用QtSql連接MySql數(shù)據(jù)庫的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

PyQt 有內(nèi)置的數(shù)據(jù)庫連接類 QtSql 。

在使用 PyQt 連接 MySql 展示數(shù)據(jù)時(shí),如果明確所有數(shù)據(jù)庫操作都與 Qt 窗口有關(guān),且不涉及復(fù)雜的數(shù)據(jù)操作,則可以使用內(nèi)置的 QtSql 類。不需要安裝額外的數(shù)據(jù)庫類,且能更加便利的與 QtTableView 等 Qt 控件進(jìn)行數(shù)據(jù)交互。

初始化

db = QtSql.QSqlDatabase.addDatabase('QMYSQL')
db.setHostName('localhost')
db.setDatabaseName('dev')
db.setUserName('root')
db.setPassword('123')
db.open()

QMYSQL 代表連接 MySql 數(shù)據(jù)庫,可以通過 QtSql.QSqlDatabase.drivers() 來查詢當(dāng)前版本 PyQt 所支持的數(shù)據(jù)庫類型。

數(shù)據(jù)庫連接創(chuàng)建后不需要長期持有 db ,連接會(huì)一直存在,直到應(yīng)用程序關(guān)閉或調(diào)用 removeDatabase() 為止才會(huì)關(guān)閉。

操作數(shù)據(jù)庫

一個(gè)基礎(chǔ)的查詢命令如下:

query = QSqlQuery()
isSuccess = query.exec("select count(*) from `user`;")
if not isSuccess:
  print(query.lastError().text())
if query.next():
  count = query.value(0)

創(chuàng)建查詢對象

創(chuàng)建 QSqlQuery 對象。此處不需要額外參數(shù),會(huì)使用上方初始化時(shí)連接的數(shù)據(jù)庫及 database 。

執(zhí)行命令

調(diào)用 exec() 方法執(zhí)行查詢命令。傳遞參數(shù)為查詢語句。該方法會(huì)返回1個(gè)布爾值表示查詢是否成功,失敗時(shí)可以通過調(diào)用 lastError().text() 來獲取失敗原因。

獲取查詢數(shù)據(jù)

QSqlQuery 提供了 next() 、 prev() 、 first() 、 last() 和 seek() 等方法在返回的記錄中進(jìn)行導(dǎo)航,可以很容易的進(jìn)行移動(dòng)。但需要注意的是, exec() 剛執(zhí)行結(jié)束后是定位在1個(gè)無效記錄上,必須先導(dǎo)航到1個(gè)有效的記錄上才能獲取數(shù)據(jù)。

可以通過 isValid() 來判斷當(dāng)前是否處在一條無效的記錄上。

另外 next() 、 prev() 、 first() 、 last() 和 seek() 等方法同樣有布爾返回值,當(dāng)導(dǎo)航向的記錄無效時(shí)會(huì)返回 False ,可以通過返回值來輔助判斷是否已經(jīng)查詢超出了邊界值。

與 QtTableView 進(jìn)行數(shù)據(jù)綁定

創(chuàng)建數(shù)據(jù)模型

self.model = QtSql.QSqlTableModel(self)
self.model.setTable('user')
self.model.setEditStrategy(QtSql.QSqlTableModel.OnFieldChange)
self.model.select()

setTable() 是指定當(dāng)前 model 關(guān)聯(lián)的是哪張表。

setEditStrategy() 是設(shè)置修改模型。其參數(shù)是個(gè)枚舉,共有3個(gè)值。

  • OnFieldChange :模型的任何將立即更新到數(shù)據(jù)庫。
  • OnRowChange :當(dāng)用戶選擇不同的行時(shí),將應(yīng)用對行(改動(dòng)過的行)的更改。
  • OnManualSubmit :所有更改將在模型中緩存,直到 submitAll() 或者 revertAll() 被調(diào)用。

select() 是從關(guān)聯(lián)的表中獲取數(shù)據(jù),默認(rèn)是獲取全部數(shù)據(jù)。

關(guān)聯(lián) QtTableView

self.tableView.setModel(self.model)

將上文創(chuàng)建的 model 設(shè)置給 tableView 即可在 tableView 上展示表中數(shù)據(jù)。

顯示的列名默認(rèn)是數(shù)據(jù)庫中表的列表,可以通過下方代碼自定義列名。

self.model.setHeaderData(0, QtCore.Qt.Horizontal, 'ID')

使用 QSqlTableModel 會(huì)返回所有列,如果有列不希望展示出來,可以通過下方代碼隱藏列。

self.tableView.setColumnHidden(3, True)

到此這篇關(guān)于PyQt中使用QtSql連接MySql數(shù)據(jù)庫的方法的文章就介紹到這了,更多相關(guān)PyQt  QtSql連接MySql內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python二叉樹的定義及常用遍歷算法分析

    Python二叉樹的定義及常用遍歷算法分析

    這篇文章主要介紹了Python二叉樹的定義及常用遍歷算法,結(jié)合實(shí)例形式分析了基于Python的二叉樹定義與先序、中序、后序、層序等遍歷方法,需要的朋友可以參考下
    2017-11-11
  • Django 創(chuàng)建/刪除用戶的示例代碼

    Django 創(chuàng)建/刪除用戶的示例代碼

    這篇文章主要介紹了Django 創(chuàng)建/刪除用戶的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 沒有安裝Python的電腦運(yùn)行Python代碼教程

    沒有安裝Python的電腦運(yùn)行Python代碼教程

    你有沒有遇到過這種情況,自己辛苦碼完了代碼想發(fā)給別人運(yùn)行看效果,可是對方竟然沒安裝Python,這要怎么運(yùn)行呢?本篇文章帶你解決這個(gè)問題,需要的朋友快來看看
    2021-10-10
  • python爬蟲實(shí)現(xiàn)最新12306搶票

    python爬蟲實(shí)現(xiàn)最新12306搶票

    這篇文章主要介紹了python爬蟲實(shí)現(xiàn)最新12306搶票,每到放假過節(jié)的時(shí)候,很多人總是對于搶不到車票而煩惱,那么經(jīng)過我?guī)讉€(gè)小時(shí)的不懈努力,完成了基于python?的12306搶票爬蟲,現(xiàn)在分享給大家。希望對大家有所幫助
    2022-01-01
  • 詳解Python中如何將數(shù)據(jù)存儲為json格式的文件

    詳解Python中如何將數(shù)據(jù)存儲為json格式的文件

    這篇文章主要介紹了詳解Python中如何將數(shù)據(jù)存儲為json格式的文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 詳解Python中的__init__和__new__

    詳解Python中的__init__和__new__

    這篇文章主要介紹了Python中的__init__和__new__的區(qū)別和實(shí)例詳解它們的作用,需要的朋友可以參考下
    2014-03-03
  • django自定義模板標(biāo)簽過程解析

    django自定義模板標(biāo)簽過程解析

    這篇文章主要介紹了django自定義模板標(biāo)簽過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python中urllib2模塊的8個(gè)使用細(xì)節(jié)分享

    Python中urllib2模塊的8個(gè)使用細(xì)節(jié)分享

    這篇文章主要介紹了Python中urllib2模塊的8個(gè)使用細(xì)節(jié)分享,本文講解了Proxy設(shè)置、Timeout設(shè)置、加入特定Header、Redirect、Cookie、PUT和DELETE方法等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • Pygame鼠標(biāo)進(jìn)行圖片的移動(dòng)與縮放案例詳解

    Pygame鼠標(biāo)進(jìn)行圖片的移動(dòng)與縮放案例詳解

    pygame是Python的第三方庫,里面提供了使用Python開發(fā)游戲的基礎(chǔ)包。本文將介紹如何通過Pygame實(shí)現(xiàn)鼠標(biāo)進(jìn)行圖片的移動(dòng)與縮放,感興趣的可以關(guān)注一下
    2021-12-12
  • Python 實(shí)例方法、類方法、靜態(tài)方法的區(qū)別與作用

    Python 實(shí)例方法、類方法、靜態(tài)方法的區(qū)別與作用

    Python中至少有三種比較常見的方法類型,即實(shí)例方法,類方法、靜態(tài)方法。它們是如何定義的呢?如何調(diào)用的呢?它們又有何區(qū)別和作用呢?感興趣的朋友跟隨小編一起看看吧
    2019-08-08

最新評論