云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

Python进阶教程 第 16 章:Python 与数据库交互(SQLite、MySQL、ORM

jxf315 2025-09-23 21:51:38 教程文章 9 ℃

16.1 引言

几乎所有实际项目都离不开数据持久化,而数据库是最常用的存储方式。
本章我们将学习:

  • 使用 sqlite3 操作 SQLite 数据库
  • 使用 pymysql 操作 MySQL 数据库
  • 使用 ORM(SQLAlchemy)进行对象化数据库操作

16.2 使用 SQLite 数据库(内置库)


16.2.1 创建数据库和表

示例:

import sqlite3

# 连接数据库(如果不存在则创建)
conn = sqlite3.connect("demo.db")
cursor = conn.cursor()

# 创建表
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT,
    age INTEGER
)
""")

conn.commit()
conn.close()

16.2.2 插入与查询数据

示例:

conn = sqlite3.connect("demo.db")
cursor = conn.cursor()

# 插入
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Alice", 20))
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Bob", 25))
conn.commit()

# 查询
cursor.execute("SELECT * FROM users")
for row in cursor.fetchall():
    print(row)

conn.close()

输出:

(1, 'Alice', 20)
(2, 'Bob', 25)

16.3 使用 MySQL 数据库(pymysql)


16.3.1 安装与连接

安装:

pip install pymysql

示例:

import pymysql

conn = pymysql.connect(
    host="localhost",
    user="root",
    password="yourpassword",
    database="testdb",
    charset="utf8mb4"
)

cursor = conn.cursor()
cursor.execute("SELECT VERSION()")
print("数据库版本:", cursor.fetchone())

conn.close()

16.3.2 CRUD 操作

示例:

conn = pymysql.connect(host="localhost", user="root",
                       password="yourpassword", database="testdb")
cursor = conn.cursor()

# 创建表
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    age INT
)
""")

# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES (%s, %s)", ("Charlie", 30))
conn.commit()

# 查询数据
cursor.execute("SELECT * FROM users")
for row in cursor.fetchall():
    print(row)

conn.close()

16.4 使用 SQLAlchemy ORM


16.4.1 ORM 概念

  • ORM(对象关系映射):用 Python 类来映射数据库表,用对象来操作数据库记录
  • 减少 SQL 语句的书写,更面向对象

16.4.2 基本使用

安装:

pip install sqlalchemy

示例:

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import declarative_base, sessionmaker

# 1. 创建引擎
engine = create_engine("sqlite:///orm_demo.db", echo=True)

# 2. 声明模型基类
Base = declarative_base()

# 3. 定义模型类
class User(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

# 4. 创建表
Base.metadata.create_all(engine)

# 5. 创建会话
Session = sessionmaker(bind=engine)
session = Session()

# 6. 插入数据
user = User(name="David", age=28)
session.add(user)
session.commit()

# 7. 查询数据
for u in session.query(User).all():
    print(u.id, u.name, u.age)

会自动创建表,并进行增删改查。


16.5 小结

技术

适用场景

特点

sqlite3

小型项目、本地存储

内置库、零配置

pymysql

中大型项目,远程数据库

性能高、需手写 SQL

SQLAlchemy ORM

复杂项目,面向对象操作数据库

自动生成 SQL、易维护

掌握这些技术后,你可以持久化保存应用数据,构建真正有状态的程序

最近发表
标签列表