天天看點

第80天:Python-Operation_MySQL

by 潮汐

本章節Python 操作 MySQL 資料庫需要是使用到 PyMySQL 驅動

PyMySQL 是在 Python3.x 版本中用于連接配接 MySQL 伺服器的一個庫,Python2 中則使用 mysqldb。

PyMySQL 遵循 Python 資料庫 API v2.0 規範,并包含了 pure-Python MySQL 用戶端庫。

Python 操作 MySQL 前提是要安裝好 MySQL 資料庫并能正常連接配接使用,安裝步驟詳見下文。

安裝 MySQL 資料庫

pymysql 子產品安裝與使用

擷取資料庫的連接配接

執行 sql 語句或存儲過程

關閉資料庫連接配接

注意: 安裝過程我們需要通過開啟管理者權限來安裝,否則會由于權限不足導緻無法安裝。

首先需要先下載下傳 MySQL 安裝包,官網下載下傳位址

下載下傳對應版本即可,或直接在網上拉取并安裝:

權限設定:

初始化 MySQL:

啟動 MySQL:

檢視 MySQL 運作狀态:

Mysql安裝成功後,預設的root使用者密碼為空,你可以使用以下指令來建立root使用者的密碼:

登陸:

Windows 上安裝 MySQL 相對來說會較為簡單,5.7 版本下載下傳位址

下載下傳完後,将 zip 包解壓到自定義目錄,這裡我将解壓後的檔案夾放在 D:\Software\MySQL\mysql-5.7.28 下;

接下來需要配置下 MySQL 的配置檔案,打開剛剛解壓的檔案夾 D:\Software\MySQL\mysql-5.7.28 ,在該檔案夾下建立 my.ini 配置檔案,編輯 my.ini 配置以下基本資訊:

注意:還需要建立資料庫資料目錄,初始化資料庫的時候需要初始化資料目錄

在 Mysql 安裝目錄下建立資料目錄 <code>datadir=D:\\Software\\MySQL\\SqlData</code>

以管理者身份打開 cmd 指令行工具,切換至 Mysql 安裝目錄:

初始化資料庫:

執行完成後,會輸出 root 使用者的初始預設密碼,如下所示:

"feKm1E/-ExWM" 即為 Mysql 初始密碼

輸入以下安裝指令:

初始化資料目錄

啟動 Mysql:

剛安裝好的資料庫 預設密碼是空,可根據自身需要修改。

windows 下修改 mysql 密碼:

建立資料庫:

檢視資料庫:

PyMySQL 子產品使用 pip指令進行安裝:

假如系統不支援 pip 指令,可以使用以下方式安裝:

pymysql .connect 函數:連接配接上資料庫

輸出結果顯示如下:表面資料庫連接配接成功

使用 pymysql 的 connect() 方法連接配接資料庫,connect 參數解釋如下:

host:MySQL服務的位址,若資料庫在本地上,使用 localhost 或者127.0.0.1。如果在其它的伺服器上,則寫對應的 IP位址

port:服務的端口号,預設為3306,不寫則為預設值。

user:登入資料庫的使用者名

passwd:登入 MySQL 的密碼

db:資料庫名

charset:設定為 utf8 編碼,解決存漢字亂碼問題

conn.cursor():擷取遊标

如果要操作資料庫,光連接配接資料是不夠的,咱們必須拿到操作資料庫的遊标,才能進行後續的操作,遊标的主要作用是用來接收資料庫操作後的傳回結果,比如讀取資料、添加資料。通過擷取到的資料庫連接配接執行個體 conn 下的 cursor() 方法來建立遊标,執行個體如下:

輸出結果為:

cursor 傳回一個遊标執行個體對象,其中包含了很多操作資料的方法,如執行sql語句,sql 執行指令:<code>execute()</code>和<code>executemany()</code>

execute(query,args=None):

函數作用:執行單條的sql語句,執行成功後傳回受影響的行數

參數說明:

query:要執行的sql語句,字元串類型

args:可選的序列或映射,用于query的參數值。如果args為序列,query中必須使用%s做占位符;如果args為映射,query中必須使用%(key)s做占位符

executemany(query,args=None):

函數作用:批量執行sql語句,比如批量插入資料,執行成功後傳回受影響的行數

args:嵌套的序列或映射,用于query的參數值

其他遊标對象如下表:

名稱

描述

close()

關閉遊标,之後遊标不可用

fetchone()

傳回一條查詢結果

fetchall()

傳回所有查詢結果

fetchmany([size])

傳回size條查詢結果

nextset()

移動到下一條結果

scroll(value,mode='relative')

移動遊标到指定行,如果mode='relative',則表示從目前行移動value條,如果mode=‘absolute’,則表示從結果集的第一行移動value條

完整資料庫連接配接操作執行個體如下:

以上結果輸出為:

建立表代碼如下:

如下所示資料庫表建立成功:

插入資料實作代碼:

插入資料結果:

Python查詢Mysql使用 fetchone() 方法擷取單條資料, 使用fetchall() 方法擷取多條資料。

fetchone(): 該方法擷取下一個查詢結果集。結果集是一個對象

fetchall(): 接收全部的傳回結果行.

rowcount: 這是一個隻讀屬性,并傳回執行 execute()方法後影響的行數。

查詢資料代碼如下:

輸出結果:

DB API中定義了一些資料庫操作的錯誤及異常,下表列出了這些錯誤和異常:

異 常

描 述

Warning

當有嚴重警告時觸發,例如插入資料是被截斷等等。必須是 StandardError 的子類。

Error

警告以外所有其他錯誤類。必須是 StandardError 的子類。

InterfaceError

當有資料庫接口子產品本身的錯誤(而不是資料庫的錯誤)發生時觸發。 必須是Error的子類。

DatabaseError

和資料庫有關的錯誤發生時觸發。 必須是Error的子類。

DataError

當有資料處理時的錯誤發生時觸發,例如:除零錯誤,資料超範圍等等。 必須是DatabaseError的子類。

OperationalError

指非使用者控制的,而是操作資料庫時發生的錯誤。例如:連接配接意外斷開、 資料庫名未找到、事務處理失敗、記憶體配置設定錯誤等等操作資料庫是發生的錯誤。 必須是DatabaseError的子類。

IntegrityError

完整性相關的錯誤,例如外鍵檢查失敗等。必須是DatabaseError子類。

InternalError

資料庫的内部錯誤,例如遊标(cursor)失效了、事務同步失敗等等。 必須是DatabaseError子類。

ProgrammingError

程式錯誤,例如資料表(table)沒找到或已存在、SQL語句文法錯誤、 參數數量錯誤等等。必須是DatabaseError的子類。

NotSupportedError

不支援錯誤,指使用了資料庫不支援的函數或API等。例如在連接配接對象上 使用.rollback()函數,然而資料庫并不支援事務或者事務已關閉。 必須是DatabaseError的子類。

本文給大家介紹 Python 如何連接配接 Mysql 進行資料的增删改查操作,文章通過簡潔的代碼方式進行示例示範,給使用 Python 操作 Mysql 的工程師提供支撐。

https://www.runoob.com/mysql/mysql-install.html

https://www.runoob.com/python3/python3-mysql.html

文中示例代碼:python-100-days

關注公衆号:python技術,回複"python"一起學習交流

第80天:Python-Operation_MySQL

作者:純潔的微笑

出處:www.ityouknow.com

資源:微信搜【純潔的微笑】關注我,回複 【程式員】【面試】【架構師】有我準備的一線程式必備計算機書籍、大廠面試資料和免費電子書。 一共1024G的資料,希望可以幫助大家提升技術和能力。

本文如對您有幫助,還請多幫 【推薦】 下此文。

點我了解:Tooool-程式員一站式導航網站