番外篇:秘境探险

第三十九章:丹道详解 (MySQL & Drivers)

← 上一章 | 返回宗门地图
路人
Py
师尊,之前的 SQLite 虽好,但只能自己用。
如今宗门壮大,需要千万人同时存取丹药(数据),SQLite 有点力不从心了!
听说有一种上古神兽叫 MySQL,可吞吐天地?
吉多
老祖
不错!MySQL 乃是服务器级别的 炼丹神炉
要驾驭它,你需要特制的 御兽环 (Drivers)
Python 界最常用的两枚御兽环是 mysql-connectorPyMySQL

1. 御兽环的选择 (Drivers)

虽然神兽是同一个,但控制它的法宝有不同流派:

2. 结印 (Connection) - PyMySQL 为例

首先,你需要安装这个法宝:pip install pymysql

alchemy.py
import pymysql

# 1. 建立灵力连接
# host: 神兽位置, user: 饲养员, password: 咒语, database: 丹炉名
db = pymysql.connect(
    host='localhost',
    user='root',
    password='password',
    database='sect_db',
    charset='utf8mb4'
)

# 2. 召唤操作游标 (如同炼丹师的手)
cursor = db.cursor()

# 3. 查看版本
cursor.execute("SELECT VERSION()")
data = cursor.fetchone()
print(f"神兽版本: {data}")

# 4. 关闭连接
db.close()

3. 炼制金丹 (CRUD 操作)

操作逻辑与 SQLite 相似,但记得 MySQL 默认开启事务,修改数据后必须 commit()

try:
    # 插入新丹药
    sql = "INSERT INTO pills (name, grade) VALUES (%s, %s)"
    cursor.execute(sql, ('九转金丹', 9))
    
    # 必须提交!否则神兽会以为你在演习,不保存!
    db.commit()
    print("丹药入库成功!")
    
except Exception as e:
    # 炸炉了!回滚!
    db.rollback()
    print(f"炼丹失败: {e}")
神仙
姐姐
师弟要注意,千万别直接用字符串拼接 SQL 哦!
比如 "SELECT * FROM users WHERE name='" + name + "'"
那样会招来 SQL 注入心魔,瞬间毁掉整个宗门!
一定要用 %s 占位符!

🎮 试练:御兽口诀

任务:在使用 PyMySQL 插入数据后,如果忘记调用哪个方法,数据实际上不会被保存?

神兽正盯着你...
你做完操作后似乎忘了什么...
>>>
下一章:傀儡之术 →