在 Python 开发中,数据库操作是不可避免的重要环节。直接使用原生 SQL 虽然灵活,但容易出错且维护困难。SQLAlchemy 作为 Python 中最流行的 ORM(对象关系映射)框架,为我们提供了优雅的数据库操作方式。
一、什么是 SQLAlchemy?
SQLAlchemy 是一个功能强大的 Python SQL 工具包和 ORM 框架。它提供了完整的数据库抽象层,让我们可以用面向对象的方式操作数据库,而不需要直接编写复杂的 SQL 语句。
主要特点:
- 数据库无关性:支持多种数据库(MySQL、PostgreSQL、SQLite 等)
- 灵活性:既支持高层 ORM,也支持底层 SQL 表达式
- 高性能:优化的查询执行和连接池管理
- 丰富的功能:事务管理、连接池、迁移等
二、安装 SQLAlchemy
pip install sqlalchemy
三、核心概念
1. Engine(引擎)
Engine 是 SQLAlchemy 与数据库通信的核心组件,负责连接数据库和执行 SQL 语句。
from sqlalchemy import create_engine # 创建引擎 engine = create_engine('sqlite:///example.db') # MySQL 示例:create_engine('mysql+pymysql://user:password@host:port/dbname')
2. Session(会话)
Session 是 ORM 与数据库交互的主要接口,用于执行查询和管理事务。
from sqlalchemy.orm import sessionmaker Session = sessionmaker(bind=engine) session = Session()
3. Model(模型)
Model 是数据库表在 Python 中的对象表示,通过类来定义表结构。
四、SQLAlchemy 的基本使用
1.基本用法
通过一个完整的示例来了解 SQLAlchemy 的基本用法:
from sqlalchemy import create_engine, Column, Integer, String, DateTime from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from datetime import datetime # 创建基类 Base = declarative_base() # 定义用户模型 class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True, autoincrement=True) username = Column(String(50), unique=True, nullable=False) email = Column(String(100), unique=True, nullable=False) created_at = Column(DateTime, default=datetime.utcnow) def __repr__(self): return f"<User(username='{self.username}', email='{self.email}')>" # 创建数据库引擎 engine = create_engine('sqlite:///example.db', echo=True) # 创建表 Base.metadata.create_all(engine) # 创建会话 Session = sessionmaker(bind=engine) session = Session() # 创建用户 new_user = User(username='alice', email='[email protected]') session.add(new_user) session.commit() # 查询用户 users = session.query(User).all() for user in users: print(user) # 关闭会话 session.close()


