新聞中心
PyQt是一種基于Python的GUI應(yīng)用程序開(kāi)發(fā)框架,其中PyQt5是其中的一個(gè)版本。它具有強(qiáng)大的功能和易于使用的API,使得開(kāi)發(fā)者能夠快速創(chuàng)建各種不同類(lèi)型的漂亮的用戶界面。

在本教程中,我們將討論如何使用PyQt5來(lái)創(chuàng)建新的數(shù)據(jù)庫(kù)。我們假設(shè)您已經(jīng)安裝了Python和PyQt5,并且對(duì)Python編程語(yǔ)言有一定的了解。如果您還沒(méi)有安裝Python和PyQt5,請(qǐng)先安裝它們。
之一步:數(shù)據(jù)存儲(chǔ)方式
在開(kāi)始創(chuàng)建新的數(shù)據(jù)庫(kù)之前,您需要決定數(shù)據(jù)庫(kù)將如何存儲(chǔ)數(shù)據(jù)。目前,有兩種最常用的數(shù)據(jù)存儲(chǔ)方式:SQLite和MySQL。
SQLite是一個(gè)輕量級(jí)的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它非常適合一些小型應(yīng)用程序,因?yàn)樗梢郧度朐趹?yīng)用程序中。在使用SQLite時(shí),您可以將所有數(shù)據(jù)庫(kù)文件存儲(chǔ)在本地磁盤(pán)上。SQLite通常用于個(gè)人或小型項(xiàng)目,因?yàn)樗恍枰渲没虬惭b。
相比之下,MySQL是一種功能強(qiáng)大的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),適用于大型項(xiàng)目或企業(yè)級(jí)應(yīng)用程序。MySQL由很多不同的部件組成,需要安裝在服務(wù)器上并配置大量的參數(shù)。如果您使用MySQL,您需要訪問(wèn)所安裝的服務(wù)器以便使用該數(shù)據(jù)庫(kù)。
在本教程中,我們將使用SQLite進(jìn)行演示。雖然SQLite比MySQL的功能略微簡(jiǎn)單,但它是一種簡(jiǎn)單而強(qiáng)大的數(shù)據(jù)庫(kù),適用于大多數(shù)中小型應(yīng)用程序。
第二步:安裝SQLite數(shù)據(jù)庫(kù)
在本教程中,我們使用PyQt5中的QtSql模塊,QtSql模塊需要SQLite驅(qū)動(dòng)程序才能與SQLite數(shù)據(jù)庫(kù)進(jìn)行通信。您需要下載驅(qū)動(dòng)程序并將其安裝在本地計(jì)算機(jī)上。
SQLite驅(qū)動(dòng)程序可以在以下網(wǎng)址(sqlite.org)的下載頁(yè)面上找到。
解壓文件后,使用以下命令將其安裝:
“`
pip install
“`
此處注意,擴(kuò)展名應(yīng)為.whl文件。例如,如果您已經(jīng)安裝好了Python 3.7,并且已將SQLite驅(qū)動(dòng)安裝在本地計(jì)算機(jī)的路徑為C:\ sqlite上,那么您需要使用以下命令安裝SQLite驅(qū)動(dòng):
“`
pip install C:\sqlite\sqlite-autoconf-xxx.tar.gz
“`
其中xxx是SQLite驅(qū)動(dòng)程序的版本號(hào)。
第三步:創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)
我們將首先創(chuàng)建一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)并添加一些數(shù)據(jù)。
在PyQt中,您可以使用QSqlDatabase類(lèi)來(lái)訪問(wèn)數(shù)據(jù)。QSqlDatabase是一個(gè)靜態(tài)類(lèi),提供了一些工具方法來(lái)打開(kāi),關(guān)閉或刪除數(shù)據(jù)庫(kù)。
在本教程中,我們將創(chuàng)建一個(gè)名為“mydatabase”的新數(shù)據(jù)庫(kù)。QSqlDatabase類(lèi)提供了一個(gè)這樣的方法:
“`
QSqlDatabase.addDatabase(‘SQLite’)
“`
此方式可用于添加一個(gè)SQLite數(shù)據(jù)庫(kù)。您也需要在該類(lèi)中指定數(shù)據(jù)庫(kù)的名稱(chēng)。為了打開(kāi)新的數(shù)據(jù)庫(kù),使用以下命令:
“`
db = QSqlDatabase.addDatabase(‘QSQLITE’)
db.setDatabaseName(‘mydatabase.sqlite’)
“`
注:確保您的代碼中包含以下三行,以便在使用QSqlDatabase之前設(shè)置路徑和驅(qū)動(dòng)程序名稱(chēng):
“`
import os
os.environ[‘QT_SQLITE_NO_WARN_READON’] = ‘1’
QSqlDatabase.addDatabase(‘QSQLITE’)
“`
在本教程中,我們將將數(shù)據(jù)庫(kù)命名為“mydatabase”。使用以下代碼:
“`
db.setDatabaseName(‘mydatabase.sqlite’)
“`
第四步:創(chuàng)建數(shù)據(jù)表
在SQLite中創(chuàng)建新表需要使用SQL語(yǔ)句。SQLite支持標(biāo)準(zhǔn)SQL語(yǔ)句,您可以使用CREATE TABLE語(yǔ)句創(chuàng)建新表。在PyQt中,您可以使用QSqlQuery類(lèi)來(lái)執(zhí)行SQL語(yǔ)句。使用以下命令創(chuàng)建名為mytable的表:
“`
query = QSqlQuery()
query.exec_(“create table mytable(id int primary key, name varchar(20))”)
“`
通過(guò)這樣的方式,在mydatabase.sqlite數(shù)據(jù)庫(kù)上創(chuàng)建了另一個(gè)名為mytable的表,其中包含兩個(gè)列:id和name。在此示例中,“id”列是表中唯一列的主鍵。
第五步:插入數(shù)據(jù)
要將數(shù)據(jù)插入表中,您需要使用SQL語(yǔ)句和QSqlQuery類(lèi)。使用以下代碼將數(shù)據(jù)插入mytable表中:
“`
query = QSqlQuery()
query.prepare(“insert into mytable(id, name) values (?, ?)”)
query.addBindValue(1)
query.addBindValue(‘Tom’)
query.exec_()
“`
此示例將id為1的新行添加到mytable表中,包含一個(gè)名為T(mén)om的新記錄。您還可以使用一個(gè)循環(huán)讀取數(shù)據(jù)并將其插入表中:
“`
for i in range(5):
query.prepare(“insert into mytable(id, name) values (?, ?)”)
query.addBindValue(i)
query.addBindValue(‘name %s’ % i)
query.exec_()
“`
此代碼將添加0到4之間的五個(gè)新行,每行都包含一個(gè)id和一個(gè)名稱(chēng)。
第六步:查詢(xún)數(shù)據(jù)
在PyQt中,您可以使用QSqlQuery類(lèi)查詢(xún)數(shù)據(jù)。使用以下代碼查詢(xún)mytable的所有記錄:
“`
query = QSqlQuery()
query.exec_(“select * from mytable”)
while query.next():
print(query.value(0), query.value(1))
“`
此代碼將讀取整個(gè)表并打印每行的id和名稱(chēng)列。
第七步:刪除數(shù)據(jù)庫(kù)
我們需要?jiǎng)h除我們的數(shù)據(jù)庫(kù)。要?jiǎng)h除mydatabase.sqlite數(shù)據(jù)庫(kù),使用以下代碼:
“`
db = QSqlDatabase.database()
db.close()
QSqlDatabase.removeDatabase(‘mydatabase’)
os.remove(‘mydatabase.sqlite’)
“`
注:確保在刪除數(shù)據(jù)庫(kù)之前關(guān)閉QSqlDatabase連接。
結(jié)果
在如上代碼塊中,如果你打開(kāi)數(shù)據(jù)庫(kù),你會(huì)看到輸出。
學(xué)會(huì)使用PyQt5可讓?xiě)?yīng)用程序開(kāi)發(fā)過(guò)程更加簡(jiǎn)化和高效。PyQt5具有強(qiáng)大的功能,允許開(kāi)發(fā)人員創(chuàng)建各種不同類(lèi)型的GUI應(yīng)用程序,包括新數(shù)據(jù)庫(kù)。Python的易用性、PyQt5的用戶界面和SQLite的輕便便攜性為新數(shù)據(jù)庫(kù)的創(chuàng)建提供了一個(gè)非常強(qiáng)大的框架。
相關(guān)問(wèn)題拓展閱讀:
- python可視化界面怎么做?
python可視化界面怎么做?
本文所演示的的可視化方法
散點(diǎn)圖(Scatterplot)
直方圖(Histogram)
小提琴圖(Violinplot)
特征兩兩對(duì)比圖(Pairplot)
安德魯斯曲線(Andrewscurves)
核密度圖(Kerneldensityestimationplot)
平行坐標(biāo)圖(Parallelcoordinates)
Radviz(力矩圖?)
熱力圖(Heatmap)
氣泡圖(Bubbleplot)
這里主要使用Python一個(gè)流行的作圖工具:Seabornlibrary,同時(shí)Pandas和bubbly輔助。為什么Seaborn比較好?
因?yàn)楹芏鄷r(shí)候數(shù)據(jù)分析,建模前,都要清洗數(shù)據(jù),清洗后數(shù)據(jù)的結(jié)果總要有個(gè)格式,我知道的最容易使用,最方便輸入模型,更好畫(huà)圖的格式叫做\”TidyData\”(WickhamH.Tidydata.JournalofStatisticalSoftware,2023,59(10):1-23.)其實(shí)很簡(jiǎn)單,TidyData格式就是:
每條觀察(記錄)自己占一行
觀察(記錄)的每個(gè)特征自己占一列
舉個(gè)例子,我們即將作圖的數(shù)據(jù)集IRIS就是TidyData(IRIS(IRIS數(shù)據(jù)集)_百度百科):
Iris數(shù)據(jù)集是常用的分類(lèi)實(shí)驗(yàn)數(shù)據(jù)集,由Fisher,1936收集整理。Iris也稱(chēng)鳶尾花卉數(shù)據(jù)集,是一類(lèi)多重變量分析的數(shù)據(jù)集。數(shù)據(jù)集包含150個(gè)數(shù)據(jù)集,分為3類(lèi),每類(lèi)50個(gè)數(shù)據(jù),每個(gè)數(shù)據(jù)包含4個(gè)屬性。可通過(guò)花萼長(zhǎng)度,花萼寬度,花瓣長(zhǎng)度,花瓣寬度4個(gè)屬性預(yù)測(cè)鳶尾花卉屬于(Setosa,Versicolour,Virginica)三個(gè)種類(lèi)中的哪一類(lèi)。
該數(shù)據(jù)集包含了5個(gè)屬性:
Sepal.Length(花萼長(zhǎng)度),單位是cm;
Sepal.Width(花萼寬度),單位是cm;
Petal.Length(花瓣長(zhǎng)度),單位是cm;
Petal.Width(花瓣寬度),單位是cm;
種類(lèi):IrisSetosa(山鳶尾)、IrisVersicolour(雜色鳶尾),以及IrisVirginica(維吉尼亞鳶尾)。
IRIS數(shù)據(jù)
可以看到,每條觀察(ID=0,1,2…)自己占一行,每個(gè)特征(四個(gè)部位長(zhǎng)/寬度,種類(lèi))自己占一列。Seaborn就是為T(mén)idyData設(shè)計(jì)的,所以方便使用。
所以這個(gè)數(shù)據(jù)集有6列,6個(gè)特征,很多時(shí)候做可視化就是為了更好的了解數(shù)據(jù),比如這里就是想看每個(gè)種類(lèi)的花有什么特點(diǎn),怎么樣根據(jù)其他特征把花分為三類(lèi)。我個(gè)人的喜好是首先一張圖盡量多的包含數(shù)據(jù)點(diǎn),展示數(shù)據(jù)信息,從中發(fā)現(xiàn)規(guī)律。我們可以利用以下代碼完全展示全部維度和數(shù)據(jù)這里用的bubbly:
三維圖,全局觀察
Python做出來(lái),其實(shí)是一張可以拖動(dòng)角度,放大縮小的圖,拖一拖看各角度視圖會(huì)發(fā)現(xiàn)三類(lèi)還是分的挺明顯的。Github上這個(gè)bubbly還是很厲害的,方便。
接下來(lái)開(kāi)始做一些基礎(chǔ)的可視化,沒(méi)有用任何修飾,代碼只有最關(guān)鍵的畫(huà)圖部分,可視化作賣(mài)敬悄為比賽的一個(gè)基礎(chǔ)和開(kāi)端,個(gè)人理解做出的圖能看就行,美不美無(wú)所謂,不美也不扣分。因?yàn)?/p>
散點(diǎn)圖,可以得到相關(guān)性等信息,比如基本上SepalLengthCm越大,SepalWidthCm越大
散點(diǎn)圖
使用Jointplot,看兩個(gè)變量的分布,KDE圖,同時(shí)展示對(duì)應(yīng)的數(shù)據(jù)點(diǎn)
就像上一篇說(shuō)的,比賽中的每個(gè)環(huán)節(jié)都稿則至關(guān)重要,很有必要看下這些分布直方圖,kde圖,根據(jù)這些來(lái)處理異常值等,這里請(qǐng)教,為什么畫(huà)了直方圖還要畫(huà)KDE??我理解說(shuō)的都是差不多的東西。
關(guān)于KDE:\”由于核密度估計(jì)方法不利用有關(guān)數(shù)據(jù)分布的先驗(yàn)知識(shí),對(duì)數(shù)據(jù)分布不附加任何假定,是一種從數(shù)據(jù)樣本本身出發(fā)研究數(shù)據(jù)分布特征的方法,因而,在統(tǒng)計(jì)學(xué)理論和應(yīng)用領(lǐng)域均受到高度的重視。\”
無(wú)論如何,我們先畫(huà)直方圖,再畫(huà)KDE
直方圖
KDE圖
這里通過(guò)KDE可以說(shuō),由于Setosa的KDE與其他兩種沒(méi)有交集,直接可以用Petailength線性區(qū)分Setosa與其他兩個(gè)物種。
Pairplot
箱線圖,顯示一組數(shù)據(jù)分散情況的統(tǒng)計(jì)圖。形狀如箱子。主要用于反映原始數(shù)據(jù)分布的特征,關(guān)鍵的5個(gè)黑線是最中渣大值、最小值、中位數(shù)和兩個(gè)四分位數(shù)。在判斷異常值,處理異常值時(shí)候有用。
BoxPlot
小提琴圖
Violinplot
這個(gè)Andrewscurves很有趣,它是把所有特征組合起來(lái),計(jì)算個(gè)值,展示該值,可以用來(lái)確認(rèn)這三個(gè)物種到底好不好區(qū)分,的說(shuō)法是“Ifthereisstructureinthedata,itmaybevisibleintheAndrews’curvesofthedata.”(Andrewsplot-Wikipedia)
Andrews'curves
radviz
Radviz可視化原理是將一系列多維空間的點(diǎn)通過(guò)非線性方法映射到二維空間的可視化技術(shù),是基于圓形平行坐標(biāo)系的設(shè)計(jì)思想而提出的多維可視化方法。圓形的m條半徑表示m維空間,使用坐標(biāo)系中的一點(diǎn)代表多為信息對(duì)象,其實(shí)現(xiàn)原理參照物理學(xué)中物體受力平衡定理。多維空間的點(diǎn)映射到二維可視空間的位置由彈簧引力分析模型確定。(Radviz可視化原理-CSDN博客),能展示一些數(shù)據(jù)的可區(qū)分規(guī)律。
數(shù)值是皮爾森相關(guān)系數(shù),淺顏色表示相關(guān)性高,比如Petal.Length(花瓣長(zhǎng)度)與Petal.Width(花瓣寬度)相關(guān)性0.96,也就是花瓣長(zhǎng)的花,花瓣寬度也大,也就是個(gè)大花。
不過(guò),現(xiàn)在做可視化基本上不用python了,具體為什么可以去看我的寫(xiě)的文章,我拿python做了爬蟲(chóng),BI做了可視化,效果和速度都很好。
finereport
可視化的一大應(yīng)用就是數(shù)據(jù)報(bào)表,而FineReport可以自由編寫(xiě)整合所需要的報(bào)表字段進(jìn)行報(bào)表輸出,支持定時(shí)刷新和監(jiān)控郵件提醒,是大部分互聯(lián)網(wǎng)公司會(huì)用到的日常報(bào)表平臺(tái)。
尤其是公司體系內(nèi)經(jīng)營(yíng)報(bào)表,我們用的是商業(yè)報(bào)表工具,就是finereport。推薦他是因?yàn)橛袃蓚€(gè)高效率的點(diǎn):①可以完成從數(shù)據(jù)庫(kù)取數(shù)(有整合數(shù)據(jù)功能)—設(shè)計(jì)報(bào)表模板—數(shù)據(jù)展示的過(guò)程。②類(lèi)似excel做報(bào)表,一張模板配合參數(shù)查詢(xún)可以代替幾十張報(bào)表。
FineBI
簡(jiǎn)潔明了的數(shù)據(jù)分析工具,也是我個(gè)人最喜歡的可視化工具,優(yōu)點(diǎn)是零代碼可視化、可視化圖表豐富,只需要拖拖拽拽就可以完成十分炫酷的可視化效果,擁有數(shù)據(jù)整合、可視化數(shù)據(jù)處理、探索性分析、數(shù)據(jù)挖掘、可視化分析報(bào)告等功能,更重要的是個(gè)人版免費(fèi)。
主要優(yōu)點(diǎn)是可以實(shí)現(xiàn)自助式分析,而且學(xué)習(xí)成本極低,幾乎不需要太深?yuàn)W的編程基礎(chǔ),比起很多國(guó)外的工具都比較易用上手,非常適合經(jīng)常業(yè)務(wù)人員和運(yùn)營(yíng)人員。在綜合性方面,F(xiàn)ineBI的表現(xiàn)比較突出,不需要編程而且簡(jiǎn)單易做,能夠?qū)崿F(xiàn)平臺(tái)展示,比較適合企業(yè)用戶和個(gè)人用戶,在數(shù)據(jù)可視化方面是一個(gè)不錯(cuò)的選擇;
這些是我見(jiàn)過(guò)比較常用的,對(duì)數(shù)據(jù)探索有幫助的可視化方法。
這個(gè)非常簡(jiǎn)單,PyQt就可以輕松實(shí)現(xiàn),一個(gè)基于Qt的接口包,可以直接拖拽控件設(shè)計(jì)UI界面,下面我簡(jiǎn)單介紹一下這個(gè)包的安裝和使用,感興趣的朋友可以自己嘗試一下:
1.首先,安裝PyQt模塊,這個(gè)直接在cmd窗口輸入命令“pipinstallpyqt5”就行,如下,整個(gè)模塊比較大,下載過(guò)程需要等待一會(huì)兒,保持聯(lián)網(wǎng):
2.安裝完成后,我們就可以直接打開(kāi)Qt自帶的QtDesigner設(shè)計(jì)師設(shè)計(jì)界面了,這里默認(rèn)會(huì)安裝到site-packages->PyQt5->Qt->bin目錄,打開(kāi)后的界面如下,可以直接新建對(duì)話框等窗口,所有的控件都可以直接拖拽,編輯屬性,非常方便:
3.這里我簡(jiǎn)單的設(shè)計(jì)了一個(gè)登錄窗口,2個(gè)輸入框和2個(gè)按鈕,如下,這里可以直接使用QSS對(duì)界面進(jìn)行美化(設(shè)置styleSheet屬性即可),類(lèi)似網(wǎng)頁(yè)的CSS,如果你有一定的前端基礎(chǔ),那么美化起來(lái)會(huì)非常容易:
設(shè)計(jì)完成后,還只是一個(gè)ui文件,不是現(xiàn)成的Python代碼,還需要借助pyuic5工具(也在bin目錄下)才能將ui文件轉(zhuǎn)化為Python代碼,切換到ui文件所在目錄,輸入命令“pyuic5-ologin.pylogin.ui”即可(這里替換成你的ui文件),轉(zhuǎn)化成功后的Python代碼如下(部分截圖):
還需要在最下面添加一個(gè)main函數(shù),創(chuàng)建上面Ui_Form類(lèi)對(duì)象顯示窗口即可,如下:
最后點(diǎn)擊運(yùn)行程序,效果如下,和剛才設(shè)計(jì)的界面效果一模一樣:
至此,我們就完成了利用Python的PyQt模塊直接拖拽控件來(lái)設(shè)計(jì)UI界面??偟膩?lái)說(shuō),整個(gè)過(guò)程非常簡(jiǎn)單,只要你有一定的Python基礎(chǔ),熟悉一下操作過(guò)程,很快就能掌握的,當(dāng)然,還有許多其他UI開(kāi)發(fā)模塊,像tkinter,wxPython,Eric6等,也都非常不錯(cuò),網(wǎng)上也有相關(guān)教程和資料,介紹的非常詳細(xì),感興趣的話,可以搜一下,希望以上分享的內(nèi)容能對(duì)你有所幫助吧,也歡迎大家評(píng)論、留言進(jìn)行補(bǔ)充。
首先,如果沒(méi)有安裝python和PyQt軟件的請(qǐng)先直接搜索下載并安裝。python是一個(gè)開(kāi)源軟件,因此都是可以在網(wǎng)上免費(fèi)下載的,最新版本即可。下載完成后,我們先打開(kāi)PyQtdesigner。
打開(kāi)后,首先是一個(gè)默認(rèn)的新建窗口界面,在這里我們就選擇默認(rèn)的窗口即可。
現(xiàn)在是一個(gè)完全空白的窗口。之一步我們要先把所有的設(shè)計(jì)元素都拖進(jìn)這個(gè)窗口。我們先拖入一個(gè)“Label”,就是一個(gè)不可編輯的標(biāo)簽。
隨后我們?cè)偻先胍粋€(gè)可以編輯的“LineEdit”
最后我們拖入最后一個(gè)元素:“PushButton”按鈕,也就是平時(shí)我們所點(diǎn)的確定。
目前我們已經(jīng)把所有所需要的元素都拖入了新建的窗口。對(duì)于每一個(gè)元素,我們都可以雙擊進(jìn)行屬性值的修改,此時(shí)我們僅需要雙擊改個(gè)名字即可
此時(shí)我們已經(jīng)完成了一半,接下來(lái)需要對(duì)動(dòng)作信號(hào)進(jìn)行操作。我們需要先切入編輯信號(hào)的模式
此時(shí)把鼠標(biāo)移動(dòng)到任意元素,都會(huì)發(fā)現(xiàn)其變成紅色,代表其被選中。
當(dāng)我們選中pushbutton后,繼續(xù)拖動(dòng)鼠標(biāo)指向上面的lineedit,會(huì)發(fā)現(xiàn)由pushbutton出現(xiàn)一個(gè)箭頭指向了lineedit,代表pushbutton的動(dòng)作會(huì)對(duì)lineedit進(jìn)行操作。
隨即會(huì)彈出一個(gè)配置連接窗口。左邊的是pushbutton的操作,我們選擇clicked(),即點(diǎn)擊pushbutton。
右邊是對(duì)lineedit的操作,我們選擇clear(),即清楚lineedit中的內(nèi)容。
最后我們點(diǎn)擊確定。
pyqt界面新建數(shù)據(jù)庫(kù)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于pyqt界面新建數(shù)據(jù)庫(kù),PyQt界面快速創(chuàng)建新數(shù)據(jù)庫(kù)教程,python可視化界面怎么做?的信息別忘了在本站進(jìn)行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開(kāi)通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)。專(zhuān)業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
文章題目:PyQt界面快速創(chuàng)建新數(shù)據(jù)庫(kù)教程(pyqt界面新建數(shù)據(jù)庫(kù))
分享鏈接:http://m.fisionsoft.com.cn/article/djippge.html


咨詢(xún)
建站咨詢(xún)
