====== 第三十四章: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"" # 创建引擎和会话 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迁移数据库 下一章:[[python_course:chapter35|第三十五章:Flask Web开发]]