一起來學習MySQL和Python
簡介
對於任何功能完整的可部署應用程序,數據的持久性是必不可少的。存儲數據的一種簡單方法是將其寫入硬碟中的文件,但是出於顯而易見的原因,我們更願意將特定於應用程序的數據寫入資料庫。Python為將數據寫入廣泛的資料庫提供了語言支持。
Python 資料庫 API
Python對資料庫編程的核心支持是Python DB API (
PEP - 249
),它不依賴於任何特定的資料庫引擎。正確的實現方式是導入Python DB API並在程序中使用,這取決於我們在持久層使用的資料庫。在本教程中,我們將演示如何使用Python連接MySQL資料庫並使用它執行事務。為此,我們將使用MySQLdb
Python包。在使用Python連接資料庫之前,我們需要為Python安裝MySQL連接器。這可以通過兩種方式實現:
一種方法是從
MySQL官方網站
直接下載相關操作系統和相關位版本的安裝程序。
另一種方法是使用pip來安裝它
如果本地機器上安裝了特定的MySQL版本,那麼你可能需要一個特定的MySQL 連接器版本,這樣就不會出現兼容性問題,我們可以使用以下命令:
最後,我們需要安裝MySQL客戶端模塊,使我們能夠從我們的Python應用程序中連接到MySQL資料庫,它將作為客戶端:
連接資料庫
安裝好連接器之後,在執行Python文件時,
import MySQLdb
語句應該不會拋出任何錯誤了。先決條件
注
:本文假定讀者對資料庫概念有基本的理解,並對MySQL資料庫有明確的了解,同時具有結構化查詢語言(SQL)的相關知識。但是,本節還是解釋了創建資料庫和用戶的基本過程。遵循以下步驟:
確保MySQL伺服器正在運行。這可以通過MySQL 工作台 ->伺服器狀態進行檢查。
打開MySQL工作台或MySQL 命令行。創建一個新資料庫,將其命名為
pythondb
。
創建一個新用戶
pythonuser
,密碼為pythonpwd123
,並授予對pythondb
的訪問許可權。
檢查到pythondb的連接
下面是一個簡單的腳本,可用於以編程方式測試到新創建資料庫的連接:
上面顯示的版本號只是一個簡單的數字。它應該匹配已安裝MySQL伺服器的版本。
我們再來仔細看看上面的示常式序,來了解它是如何工作的。首先,
import MySQLdb
用於導入所需的python模塊。MySQLdb.connect()
方法使用主機名、用戶名、密碼和資料庫名創建一個資料庫連接。成功連接資料庫後,它將返回一個連接對象(在這裡以dbconnect
引用它)。通過使用連接對象,我們可以在關閉連接之前執行查詢、提交事務和回滾事務。
在獲得連接對象之後,我們需要獲得一個
MySQLCursor
對象,以便使用execute
方法執行查詢。可以使用fetchall、fetchone
或fetchmany
方法檢索事務的結果集,本教程後面將討論這些方法。除了執execute方法之外,還有三個與資料庫事務相關的重要方法。現在我們將簡要了解這些方法。
dbconnect.commit()
方法通知資料庫,在調用此函數之前執行的更改將完成,如果事務成功,則無法回滾到以前狀態。有時,如果發生事務失敗,我們需要將資料庫更改為失敗發生之前的狀態,這樣數據就不會丟失或損壞。在這種情況下,我們需要使用
dbconnect.rollback()
將資料庫回滾到以前的狀態。最後,使用
dbconnect.close()
方法關閉到資料庫的連接。要執行進一步的事務,我們需要創建一個新連接。新建一個表
一旦成功地建立了與
pythondb
的連接,我們就可以開始下一步了。讓我們在其中創建一個新表:執行上述腳本之後,你應該能看到一個為名為
pythondb
的庫創建的名為movie
的新表。可以使用MySQL 工作台來查看。執行CRUD操作
現在,我們將通過Python腳本在新創建的資料庫表中執行一些插入、讀取、修改和刪除操作。
創建一條新記錄
下面的腳本演示了如何使用Python腳本將一條新記錄插入MySQL資料庫:
從表中讀取行
在資料庫中插入一個新行之後,可以使用游標對象以三種方式來獲取數據:
cursor.fetchall()
-可用於獲取所有行
cursor.fetchmany()
-可用於獲取選定的行
cursor.fetchone()
-只能用於從結果集中獲取第一行
為了簡單起見,我們將使用「select all」SQL查詢,並在
fetchal
l
方法的結果集上使用for循環來列印單個記錄更新行
現在讓我們把「Bruce Almighty」的類型從Comedy改為Staire:
刪除記錄
下面是一個Python腳本,演示了如何刪除一個資料庫行:
結論
在本文中,我們學習了如何使用Python DB API來連接到資料庫。具體來說,我們了解了如何使用Python DB API的MySQLdb實現來建立到MySQL資料庫的連接。我們還學習了如何使用資料庫來執行事務。
英文原文:https://stackabuse.com/getting-started-with-mysql-and-python/
譯者:一瞬
※來,畫原型,賺120元酬金
※Python金融數據分析為何這麼火???
TAG:Python程序員 |