第三十四章:ORM与SQLAlchemy
本章目标
完成本章学习后,你将能够:
- 理解ORM概念
- 使用SQLAlchemy定义模型
- 执行CRUD操作
- 处理关系映射
SQLAlchemy基础
from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker Base = declarative_base() # 定义模型 class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String(50)) email = Column(String(100)) def __repr__(self): return f"<User(name='{self.name}', email='{self.email}')>" # 创建引擎和会话 engine = create_engine('sqlite:///example.db') Base.metadata.create_all(engine) Session = sessionmaker(bind=engine) session = Session()
CRUD操作
# 创建 new_user = User(name='Alice', email='alice@example.com') session.add(new_user) session.commit() # 查询 user = session.query(User).filter_by(name='Alice').first() users = session.query(User).filter(User.age > 18).all() # 更新 user.email = 'new@example.com' session.commit() # 删除 session.delete(user) session.commit()
关系映射
from sqlalchemy import ForeignKey from sqlalchemy.orm import relationship class Post(Base): __tablename__ = 'posts' id = Column(Integer, primary_key=True) title = Column(String(100)) user_id = Column(Integer, ForeignKey('users.id')) user = relationship("User", back_populates="posts") User.posts = relationship("Post", back_populates="user")
本章练习
1. 定义多表关系模型 2. 实现复杂查询 3. 使用Alembic迁移数据库