最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

在使用 PyQt 連接 MySql 展示數(shù)據(jù)時,如果明確所有數(shù)據(jù)庫操作都與 Qt 窗口有關(guān),且不涉及復(fù)雜的數(shù)據(jù)操作,則可以使用內(nèi)置的 QtSql 類。不需要安裝額外的數(shù)據(jù)庫類,且能更加便利的與 QtTableView 等 Qt 控件進行數(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() 來查詢當前版本 PyQt 所支持的數(shù)據(jù)庫類型。

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

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

一個基礎(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ù),會使用上方初始化時連接的數(shù)據(jù)庫及 database 。

執(zhí)行命令

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

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

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

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

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

與 QtTableView 進行數(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() 是指定當前 model 關(guān)聯(lián)的是哪張表。

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

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

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

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

self.tableView.setModel(self.model)

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

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

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

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

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實現(xiàn)雙向鏈表

    Python實現(xiàn)雙向鏈表

    這篇文章主要為大家詳細介紹了Python實現(xiàn)雙向鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • python 上下文管理器及自定義原理解析

    python 上下文管理器及自定義原理解析

    這篇文章主要介紹了python 上下文管理器原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下
    2019-11-11
  • Python如何實現(xiàn)一個CLI命令行功能

    Python如何實現(xiàn)一個CLI命令行功能

    Click是一個強大的Python庫,專門用于快速創(chuàng)建命令行界面,本文將詳細介紹Click庫的功能以及CLI的應(yīng)用場景,并通過具體代碼示例展示如何實現(xiàn)CLI,有需要的可以了解下
    2025-02-02
  • Python內(nèi)置數(shù)據(jù)類型list各方法的性能測試過程解析

    Python內(nèi)置數(shù)據(jù)類型list各方法的性能測試過程解析

    這篇文章主要介紹了Python內(nèi)置數(shù)據(jù)類型list各方法的性能測試過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下
    2020-01-01
  • Pandas把dataframe或series轉(zhuǎn)換成list的方法

    Pandas把dataframe或series轉(zhuǎn)換成list的方法

    這篇文章主要介紹了Pandas把dataframe或series轉(zhuǎn)換成list的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-06-06
  • python區(qū)分不同數(shù)據(jù)類型的方法

    python區(qū)分不同數(shù)據(jù)類型的方法

    這篇文章主要介紹了python區(qū)分不同數(shù)據(jù)類型的方法實例以及相關(guān)知識點,需要的朋友們學(xué)習下。
    2019-10-10
  • python反反爬蟲技術(shù)限制連續(xù)請求時間處理

    python反反爬蟲技術(shù)限制連續(xù)請求時間處理

    這篇文章主要為大家介紹了python反反爬蟲技術(shù)限制連續(xù)請求時間處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • python中字符串比較使用is、==和cmp()總結(jié)

    python中字符串比較使用is、==和cmp()總結(jié)

    在Python中比較字符串最好是使用簡單邏輯操作符,今天為大家講解一下is、==和cmp()使用總結(jié)
    2018-03-03
  • 詳解Scrapy Redis入門實戰(zhàn)

    詳解Scrapy Redis入門實戰(zhàn)

    這篇文章主要介紹了詳解Scrapy Redis入門實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-11-11
  • Python中用于轉(zhuǎn)換字母為小寫的lower()方法使用簡介

    Python中用于轉(zhuǎn)換字母為小寫的lower()方法使用簡介

    這篇文章主要介紹了Python中用于轉(zhuǎn)換字母為小寫的lower()方法使用,是Python學(xué)習中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05

最新評論

云南省| 政和县| 革吉县| 广饶县| 绿春县| 塔城市| 德格县| 凉山| 肇东市| 子洲县| 马山县| 利辛县| 麻城市| 钟祥市| 贵南县| 通化县| 长宁区| 德州市| 盐边县| 迁安市| 民丰县| 富蕴县| 南充市| 吉水县| 诸城市| 郴州市| 通榆县| 峨边| 龙川县| 修武县| 会昌县| 同德县| 桃江县| 托克托县| 台州市| 收藏| 柘城县| 庄浪县| 崇义县| 曲松县| 彭水|