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

