當前位置:
首頁 > 最新 > 如虎添翼!在PyQt5中便捷的進行資料庫操作!

如虎添翼!在PyQt5中便捷的進行資料庫操作!

編程應用、實戰教程,不容錯過

在桌面圖像化界面編程中,我們通常需要將一些數據或配置信息存儲在本地。在本地進行數據的存儲,我們可以直接使用文本文件,比如ini文件、csv文件、json文件等,或者是使用文件型的資料庫(比如sqlit3)進行存儲。


PyQt5的SQL資料庫支持

Qt平台對SQL編程有著良好的支持,PyQt5也一併繼承了過來。在PyQt5中,QtSql子模塊提供對SQL資料庫的支持:

從上圖我們可以發現,QtSQL模塊中包含了很多個類,這些類歸總起來主要包含三大部分:

驅動層,用於提供特定資料庫與SQL API介面之間的低級連接功能;其中包括QSqlDriver、QSqlDriverCreatorBase、QSqlResult;

SQL API層,用於提供對資料庫的訪問。通常來說,我們會使用QSqlDatabase建立資料庫連接,使用QSqlQuery等類實現資料庫的交互(執行SQL語句)。此外還有QSqlError、QSqlField、QSqlIndex、QSqlRecord等類。

用戶界面操作層,用於將資料庫操作的數據鏈接到PyQt相應的數據小部件,將數據和操作展示在Qt界面中。這些類包括:QSqlQueryModel、QSqlTableModel等。

在這些類中,每個類都有自己特定的用途,其中:

QSQL:包含整個Qt SQL模塊中使用的各種標識符

QSqlDatabase:處理與資料庫的連接

QSqlDriver:用於訪問特定SQL資料庫的抽象基類

QSqlDriverCreator:模板類,為特定驅動程序類型提供SQL驅動程序工廠

QSqlDriverCreatorBase:SQL驅動程序工廠的基類

QSqlError:SQL資料庫錯誤信息

QSqlField:處理SQL資料庫表和視圖中的欄位

QSqlIndex:用於操作和描述資料庫索引的函數

QSqlQuery:執行和操作SQL語句的方法

QSqlQueryModel:SQL結果集的只讀數據模型

QSqlRecord:封裝資料庫記錄

QSqlRelationalTableModel:具有外鍵支持的單個資料庫表的可編輯數據模型

QSqlResult:用於從特定SQL資料庫訪問數據的抽象介面

QSqlTableModel:單個資料庫表的可編輯數據模型

在實際的PyQt編程中,我們很少使用驅動層的類,多通過API層的來建立資料庫連接、進行資料庫查詢等,然後通過用戶界面操作層的類將數據結果顯示在圖形界面中。下面我們就來簡單使用一下。


首先,我們通過PyQt5創建一個基本的圖形界面。這個界面由兩個部分組成:

按鈕操作層:用來通過按鈕進行資料庫操作;

資料庫展示層:用來展示資料庫表的信息;

UI界面的代碼如下所示:

最終顯示出來的UI界面如下圖所示:


在上面創建的UI界面中,我們有一個「創建資料庫」的按鈕,這個按鈕我們用來建立一個資料庫連接。

Qt中內置了好幾個資料庫的驅動程序,也就是說我們可以直接在PyQt中對這些資料庫進行操作。這些內置的資料庫包括:

IBM DB2,驅動名為QDB2;

Borland InterBase,驅動名為QIBASE;

MySQL,驅動名為QMYSQL;

Oracle,驅動名為QOCI;

Microsoft SQL Server和其他符合ODBC的資料庫,驅動名為QODBC;

PostgreSQL,驅動名為QPSQL;

SQLite2,驅動名為QSQLITE2;

SQLite3,驅動名為QSQLITE;

通過這些驅動名,我們可以藉助QSqlDatabase類的addDatabase方法添加某個資料庫的連接,比如建立一個MySQL資料庫的連接為:

為了方便演示,在此我們使用Sqlite資料庫。

在MainUi()類中,我們創建一個名為create_db()的方法:

在這個方法中,我們自定義資料庫名並創建一個sqlite資料庫,然後在這個資料庫中創建了一個名為zmister的資料庫表,最後在zmister資料庫表中插入了三條數據。

接下來,我們將這個方法綁定到【創建資料庫】按鈕的點擊事件上:

這樣,當我們點擊【創建資料庫】按鈕的時候,UI界面會彈出一個文本輸入框供我們輸入資料庫的名稱,然後創建一個數據表並插入數據:

GIF

完成操作之後,會發現文件同級目錄下多出了一個zmister.sqlite文件,我們使用SQLite Expert等SQLite資料庫可視化軟體打開它:

GIF

這樣,我們就成功在PyQt5中創建連接並寫入操作了一個資料庫。


上面我們創建了一個SQLite資料庫並在其中寫入了三條數據,如何將數據表中的數據顯示在UI界面中呢。我們可以藉助QSqlTableModel類來實現。

還記得我們在創建UI界面的時候,在界面的右方放置了一個QTableView()部件,我們的資料庫數據將顯示在這上面。

繼續在MainUi()類中創建一個名為view_data()的方法,在方法中實例化一個QSqlTableModel(),並將QTableView()部件的model模型設置為實例化後的QSqlTableModel():

然後,將view_data()方法綁定在UI界面的【瀏覽數據】按鈕的點擊事件中:

這樣,我們在點擊【瀏覽數據】按鈕的時候,會將zmister表中的所有數據顯示出來:

除了簡單的將數據顯示在UI界面上,我們還可以直接在UI界面上修改數據:

GIF


完成查和改的SQL操作之後,我們接著來了解一下如何添加數據和刪除數據。

添加數據通過數據模型對象的insertRows()方法來實現,刪除數據則通過數據模型對象的removeRow()方法來實現。

我們繼續在MainUi()類中創建兩個方法:addrowdata()和delrowdata():

然後將這兩個方法分別綁定在【添加一行】和【刪除一行】按鈕的點擊事件上:

這樣就實現了UI界面上的添加數據和刪除數據:

GIF

這樣,我們就基本實現了使用PyQt5對資料庫的增刪改查操作,更加詳細的使用和說明請參考Qt文檔。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 州的先生 的精彩文章:

如何直接在瀏覽器中查看和調試Django-Restful介面

TAG:州的先生 |