利用Python連接MySQL超詳細實戰(zhàn)教程
前言
在 Python 開發(fā)中,數(shù)據(jù)庫基本是繞不開的核心環(huán)節(jié),而 MySQL + PyMySQL 是最常見、最穩(wěn)定、最輕量的組合。
很多同學在剛開始連接數(shù)據(jù)庫時,經(jīng)常會遇到連不上、編碼錯誤、游標報錯等問題。
這篇文章我會用非常清晰的方式帶你完成:
- PyMySQL 安裝
- 數(shù)據(jù)庫連接參數(shù)配置
- 創(chuàng)建連接對象
- 創(chuàng)建游標對象
- 執(zhí)行 SQL 查詢
- 執(zhí)行插入語句
- 完整代碼可直接運行
內(nèi)容全部來自實戰(zhàn)總結(jié),照著敲你就能用!
一、安裝 PyMySQL
PyMySQL 是 Python 中用于連接 MySQL 的輕量級庫,安裝方式非常簡單:
pip install pymysql
安裝完成后我們就可以在項目中使用它進行數(shù)據(jù)庫操作。
二、準備數(shù)據(jù)庫連接配置
連接 MySQL 需要提供登錄信息,我們通常將參數(shù)寫成一個字典,方便管理:
import pymysql
db_confing = {
'host': '127.0.0.1', # 服務器地址
'port': 3306, # MySQL 端口
'user': 'root', # 用戶名
'password': 'root', # 密碼
'db': 'wp', # 需要連接的數(shù)據(jù)庫
'charset': 'utf8', # 字符編碼
}
? 這些參數(shù)必須真實存在,否則連接會失敗。
三、建立數(shù)據(jù)庫連接
PyMySQL 最核心的一句代碼:
數(shù)據(jù)庫對象 = pymysql.connect(**db_confing) print(數(shù)據(jù)庫對象)
這里使用 **db_confing 是 Python 字典解包語法,等同于:
host='127.0.0.1', port=3306, user='root' ...
執(zhí)行后會得到類似:
<pymysql.connections.Connection object at 0xxx>
代表連接成功。
四、創(chuàng)建游標對象(Cursor)
游標對象用來 執(zhí)行 SQL 與 接收查詢結(jié)果。
游標對象 = 數(shù)據(jù)庫對象.cursor() print(游標對象)
每一次查詢、插入,都必須通過游標來完成。
五、執(zhí)行 SQL 查詢(SELECT)
下面是最常用的查詢模式:
# 創(chuàng)建游標對象
游標對象 = 數(shù)據(jù)庫對象.cursor()
# 寫 SQL 語句
sql = 'SELECT * FROM hk'
# 執(zhí)行 SQL
游標對象.execute(sql)
# 接受所有結(jié)果
返回結(jié)果 = 游標對象.fetchall()
# 打印結(jié)果
for row in 返回結(jié)果:
print(row)
# 關(guān)閉
游標對象.close()
數(shù)據(jù)庫對象.close()
這里 fetchall() 會返回一個 元組列表,每一行數(shù)據(jù)都是一個元組。
六、封裝查詢函數(shù)(實戰(zhàn))
def select():
sql = 'select * from demo'
游標對象.execute(sql)
返回結(jié)果 = 游標對象.fetchall()
print(返回結(jié)果)
你可以在需要的地方直接調(diào)用:
select()
七、執(zhí)行插入(INSERT + commit)
插入與查詢不同,執(zhí)行后必須 commit(),否則無法真正寫入數(shù)據(jù)庫。
def insert():
name = input('請輸入你的姓名:')
sql = f'insert into demo value(null,"{name}")'
游標對象.execute(sql)
數(shù)據(jù)庫對象.commit() # ?? 必須提交
? 注意字符串需要加引號,否則 SQL 會報錯。
下面我在你 剛剛那篇 CSDN 博客的基礎(chǔ)上,繼續(xù)追加兩個核心模塊:
? DELETE(刪除數(shù)據(jù))
? UPDATE(修改數(shù)據(jù))
格式依舊符合 CSDN 爆款文章結(jié)構(gòu),你可以直接復制回博客中,放在原文 “七、執(zhí)行插入(INSERT)” 的后面即可。
八、執(zhí)行刪除(DELETE)
刪除操作同樣需要 commit() 才能生效。
最推薦寫成一個交互式函數(shù):輸入要刪除的 ID,然后執(zhí)行刪除。
def delete():
delete_id = input('請輸入要刪除的ID:')
sql = f'DELETE FROM demo WHERE id = {delete_id}'
游標對象.execute(sql)
數(shù)據(jù)庫對象.commit()
print(f'ID 為 {delete_id} 的記錄已刪除')
? 注意:
- DELETE 操作必須加 WHERE 條件
- 否則可能會刪光整個表!
示例輸入:
請輸入要刪除的ID:3
輸出:
ID 為 3 的記錄已刪除
九、執(zhí)行修改(UPDATE)
UPDATE 同樣需要提交才能生效。
這是一個最常見的「根據(jù) ID 修改姓名」的例子:
def update():
update_id = input('請輸入要修改的ID:')
new_name = input('請輸入新的姓名:')
sql = f'UPDATE demo SET name = "{new_name}" WHERE id = {update_id}'
游標對象.execute(sql)
數(shù)據(jù)庫對象.commit()
print(f'ID 為 {update_id} 的記錄已成功修改')
執(zhí)行時會有兩次輸入:
請輸入要修改的ID:2 請輸入新的姓名:王五
輸出:
ID 為 2 的記錄已成功修改
十、最終完整版(增刪改查四合一)
你可以在原文的最終代碼中加入以下內(nèi)容,結(jié)構(gòu)完全統(tǒng)一:
def select():
sql = 'select * from demo'
游標對象.execute(sql)
返回結(jié)果 = 游標對象.fetchall()
print(返回結(jié)果)
def insert():
name = input('請輸入你的姓名:')
sql = f'insert into demo value(null,"{name}")'
游標對象.execute(sql)
數(shù)據(jù)庫對象.commit()
print('插入成功')
def delete():
delete_id = input('請輸入要刪除的ID:')
sql = f'DELETE FROM demo WHERE id = {delete_id}'
游標對象.execute(sql)
數(shù)據(jù)庫對象.commit()
print(f'ID 為 {delete_id} 的記錄已刪除')
def update():
update_id = input('請輸入要修改的ID:')
new_name = input('請輸入新的姓名:')
sql = f'UPDATE demo SET name = "{new_name}" WHERE id = {update_id}'
游標對象.execute(sql)
數(shù)據(jù)庫對象.commit()
print(f'ID 為 {update_id} 的記錄已成功修改')
總結(jié):增刪改查你已經(jīng)全會了!
至此為止,你已經(jīng)擁有:
- ? SELECT 查詢
- ? INSERT 插入
- ? DELETE 刪除
- ? UPDATE 修改
- ? commit 提交機制
- ? 游標對象生命周期
- ? 完整數(shù)據(jù)庫交互代碼
到此這篇關(guān)于利用Python連接MySQL的文章就介紹到這了,更多相關(guān)Python連接MySQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python連接數(shù)據(jù)庫的3種方法對比(SQLite\MySQL\PostgreSQL)
- 在Python中使用SQLite數(shù)據(jù)庫進行增刪改查操作的代碼示例
- python連接sqlite3簡單用法完整例子
- Python中如何使用sqlite3操作SQLite數(shù)據(jù)庫詳解
- Python進行SQLite和MySQL數(shù)據(jù)庫連接與操作的完整指南
- Python進行PostgreSQL數(shù)據(jù)庫連接的詳細使用指南
- 使用python進行PostgreSQL數(shù)據(jù)庫連接全過程
- Python連接PostgreSQL數(shù)據(jù)庫并查詢數(shù)據(jù)的詳細指南
- Python連接到PostgreSQL數(shù)據(jù)庫的方法詳解
- Python數(shù)據(jù)庫學習心得:SQLite、MySQL、PostgreSQL優(yōu)缺點
相關(guān)文章
Python數(shù)據(jù)庫的連接實現(xiàn)方法與注意事項
這篇文章主要介紹了Python數(shù)據(jù)庫的連接實現(xiàn)方法與注意事項,需要的朋友可以參考下2016-02-02
Python實現(xiàn)partial改變方法默認參數(shù)
這篇文章主要介紹了Python實現(xiàn)partial改變方法默認參數(shù),需要的朋友可以參考下2014-08-08
Pytorch BCELoss和BCEWithLogitsLoss的使用
這篇文章主要介紹了Pytorch BCELoss和BCEWithLogitsLoss的使用詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05

