Python操作MySQL的從入門到實(shí)戰(zhàn)指南
1 基礎(chǔ)環(huán)境準(zhǔn)備
想要順利進(jìn)行后續(xù)操作,先把基礎(chǔ)環(huán)境搭好,這一步很簡單,跟著官網(wǎng)指引來就行~
1.1 Windows 安裝 Python3
- 官方下載地址:https://www.python.org/downloads/
- 安裝注意:勾選「Add Python to PATH」,這樣后續(xù)在命令行就能直接調(diào)用 Python 啦
1.2 安裝 VS Code
- 官方下載地址:https://code.visualstudio.com/
- 推薦插件:Python(微軟官方插件)、Code Runner(一鍵運(yùn)行代碼)
1.3 創(chuàng)建 Python 文件
打開 VS Code → 新建文件 → 保存為 mysql_operation.py(后綴必須是 .py),準(zhǔn)備開始寫代碼~
2 Python 基礎(chǔ)快速回顧
如果是剛學(xué) Python 的同學(xué),先掌握這些基礎(chǔ)就夠了,后續(xù)操作都會用到~
2.1 注釋(代碼說明很重要)
# 單行注釋:用 # 開頭,注釋一行內(nèi)容 # 下面是多行注釋,用三個(gè)單引號或雙引號包裹 ''' 多行注釋第一行 多行注釋第二行 ''' """ 雙引號版多行注釋 適合注釋較長的說明 """

2.2 常用數(shù)據(jù)類型
# 整數(shù)類型:用于存儲年齡、編號等整數(shù)
age = 25
# 浮點(diǎn)數(shù)類型:用于存儲小數(shù)
pi = 3.14
print(type(pi)) # 輸出 <class 'float'>,查看數(shù)據(jù)類型
# 字符串類型:用于存儲姓名、文本等
name = "maria"
print(type(name)) # 輸出 <class 'str'>
# 輸出方式示例
print("你好,Python!") # 直接輸出字符串
print(name) # 輸出變量
print("名字是:", name) # 字符串和變量組合輸出

2.3 條件判斷(根據(jù)條件執(zhí)行不同邏輯)
score = 91
score = 91
if score >= 90:
print("優(yōu)秀") # 滿足條件時(shí)執(zhí)行
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格") # 所有條件都不滿足時(shí)執(zhí)行

2.4 循環(huán)(重復(fù)執(zhí)行代碼)
# for 循環(huán):遍歷字符串、列表等
name = "maria"
for char in name:
print(char) # 依次輸出 m、a、r、i、a
# while 循環(huán):根據(jù)條件重復(fù)執(zhí)行
name = "maria"
index = 0
while index<len(name): # len(name) 是字符串長度(5)
char = name[index]
print(char)
index += 1 # 索引自增,避免死循環(huán)

2.5 函數(shù)(封裝可復(fù)用的代碼)
# 定義函數(shù):求兩個(gè)數(shù)的最大值
def max_value(a, b):
if a > b:
return a # 返回較大值
else:
return b
# 調(diào)用函數(shù)
result = max_value(2, 3)
print(result) # 輸出 3

3 Python 操作 MySQL 實(shí)戰(zhàn)
這部分是核心!教大家用 Python 對 MySQL 執(zhí)行增刪查改(CRUD)操作~
第一步:創(chuàng)建 MySQL 測試環(huán)境
先在 MySQL 中創(chuàng)建測試表和專用用戶,避免使用 root 用戶直接操作(安全規(guī)范)。
-- 創(chuàng)建測試表 test_table CREATE TABLE test_table ( id INT AUTO_INCREMENT PRIMARY KEY, # 自增主鍵 name VARCHAR(255), # 姓名 age INT # 年齡 ); -- 創(chuàng)建 Python 專用操作用戶 CREATE USER 'python_rw'@'%' IDENTIFIED BY 'Idyq8_a1'; -- 授予增刪查改等權(quán)限(根據(jù)實(shí)際需求調(diào)整) GRANT create,alter,insert,delete,select,update ON *.* TO 'python_rw'@'%';

第二步:安裝 MySQL 連接模塊
Python 本身不支持直接連接 MySQL,需要安裝第三方模塊:
pip install pymysql==1.1.0
(如果提示 pip 不是內(nèi)部命令,檢查 Python 是否添加到環(huán)境變量)
第三步:Python 增刪查改完整代碼
把以下代碼復(fù)制到 mysql_operation.py 中,修改數(shù)據(jù)庫連接信息即可使用~
# 導(dǎo)入 pymysql 庫
import pymysql
from pymysql.err import OperationalError, ProgrammingError
# 1. 建立數(shù)據(jù)庫連接(替換為你的數(shù)據(jù)庫信息)
# 增加連接參數(shù),提升穩(wěn)定性
config = {
'host': '192.168.184.151', # 數(shù)據(jù)庫地址
'user': 'python_rw', # 用戶名
'password': 'Idyq8_a1', # 密碼
'database': 'maria', # 數(shù)據(jù)庫名
'charset': 'utf8mb4', # 字符集(避免中文亂碼)
'connect_timeout': 10, # 連接超時(shí)時(shí)間(防止卡死)
'cursorclass': pymysql.cursors.DictCursor # 可選:返回字典格式結(jié)果,更易讀
}
# 初始化連接和游標(biāo)為None,避免空對象調(diào)用
cnx = None
cursor = None
try:
# 先測試連接是否能成功建立
cnx = pymysql.connect(**config)
print("? 數(shù)據(jù)庫連接成功")
# 2. 創(chuàng)建游標(biāo)對象
cursor = cnx.cursor()
# 3. 插入數(shù)據(jù)(INSERT)
sql_insert = "INSERT INTO test_table (name, age) VALUES (%s, %s)"
values_insert = ("John", 25)
cursor.execute(sql_insert, values_insert)
cnx.commit()
print(f"?? 數(shù)據(jù)插入成功,新增記錄 ID:{cursor.lastrowid}")
# 4. 查詢數(shù)據(jù)(SELECT)
sql_select = "SELECT * FROM test_table"
cursor.execute(sql_select)
rows = cursor.fetchall()
print("\n?? 查詢結(jié)果:")
# 適配 DictCursor,用鍵取值(更直觀)
for row in rows:
print(f"ID: {row['id']}, 姓名: {row['name']}, 年齡: {row['age']}")
# 5. 更新數(shù)據(jù)(UPDATE)
sql_update = "UPDATE test_table SET age = %s WHERE name = %s"
values_update = (30, "John")
cursor.execute(sql_update, values_update)
cnx.commit()
print(f"\n?? 數(shù)據(jù)更新成功,影響行數(shù):{cursor.rowcount}")
# 6. 刪除數(shù)據(jù)(DELETE)
sql_delete = "DELETE FROM test_table WHERE name = %s"
values_delete = ("John",) # 單個(gè)參數(shù)保留逗號
cursor.execute(sql_delete, values_delete)
cnx.commit()
print(f"??? 數(shù)據(jù)刪除成功,影響行數(shù):{cursor.rowcount}")
except OperationalError as e:
# 專門捕獲連接相關(guān)錯誤(地址/密碼/數(shù)據(jù)庫不存在)
print(f"? 數(shù)據(jù)庫連接失?。簕str(e)}")
print("請檢查:1.數(shù)據(jù)庫地址是否正確 2.用戶名/密碼是否正確 3.數(shù)據(jù)庫是否存在")
except ProgrammingError as e:
# 專門捕獲SQL語法/表不存在錯誤
print(f"? SQL執(zhí)行失?。簕str(e)}")
print("請檢查:1.test_table表是否存在 2.字段名(name/age)是否正確")
except Exception as e:
# 其他未知錯誤
if cnx: # 只有連接成功才回滾
cnx.rollback()
print(f"? 操作失敗:{str(e)}")
finally:
# 7. 安全關(guān)閉游標(biāo)和連接(判斷對象是否存在,避免空指針)
if cursor:
cursor.close()
if cnx:
cnx.close()
print("\n?? 數(shù)據(jù)庫連接已關(guān)閉")

關(guān)鍵注意事項(xiàng)
- 連接信息要替換為你的實(shí)際環(huán)境(host、database 等)
- 執(zhí)行插入、更新、刪除操作后,必須調(diào)用
cnx.commit() - 單個(gè)參數(shù)的 SQL 語句,values 要加逗號(如
("John",)) - 一定要關(guān)閉游標(biāo)和連接,避免資源泄露
- 建議用 try-except 捕獲異常,保證程序穩(wěn)定性
以上就是Python操作MySQL的從入門到實(shí)戰(zhàn)指南的詳細(xì)內(nèi)容,更多關(guān)于Python操作MySQL指南的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
腳本測試postman快速導(dǎo)出python接口測試過程示例
這篇文章主要介紹了關(guān)于腳本測試postman快速導(dǎo)出python接口測試示例的過程操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09
Python深度學(xué)習(xí)albumentations數(shù)據(jù)增強(qiáng)庫
下面開始albumenations的正式介紹,在這里我強(qiáng)烈建議英語基礎(chǔ)還好的讀者去官方網(wǎng)站跟著教程一步步學(xué)習(xí),而這里的內(nèi)容主要是我自己的一個(gè)總結(jié)以及方便英語能力較弱的讀者學(xué)習(xí)2021-09-09
Python實(shí)現(xiàn)讀取TXT文件數(shù)據(jù)并存進(jìn)內(nèi)置數(shù)據(jù)庫SQLite3的方法
這篇文章主要介紹了Python實(shí)現(xiàn)讀取TXT文件數(shù)據(jù)并存進(jìn)內(nèi)置數(shù)據(jù)庫SQLite3的方法,涉及Python針對txt文件的讀取及sqlite3數(shù)據(jù)庫的創(chuàng)建、插入、查詢等相關(guān)操作技巧,需要的朋友可以參考下2017-08-08
pycocotools介紹以及在windows10下的安裝過程
這篇文章主要介紹了pycocotools介紹以及在windows10下的安裝過程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
python實(shí)現(xiàn)循環(huán)保存文件并循環(huán)讀取文件
文章主要介紹了使用Python循環(huán)保存和讀取文件的方法,以新聞文本主題分類數(shù)據(jù)為例,使用列表形式進(jìn)行操作,保存代碼將列表作為文件保存,讀取代碼則用于循環(huán)讀取保存的文件2026-05-05
python提取視頻中的音頻的實(shí)現(xiàn)示例
MoviePy是一個(gè)用于視頻編輯的庫,它可以提取視頻中的音頻并保存為音頻文件,本文主要介紹了python提取視頻中的音頻的實(shí)現(xiàn)示例,感興趣的可以了解一下2024-03-03
python 遺傳算法求函數(shù)極值的實(shí)現(xiàn)代碼
今天小編就為大家分享一篇python 遺傳算法求函數(shù)極值的實(shí)現(xiàn)代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02

