from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, ForeignKey, ForeignKeyConstraint
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 定义数据库引擎
engine = create_engine('sqlite:///example.db')
Session = sessionmaker(bind=engine)
session = Session()
Base = declarative_base()
# 定义模型
class Parent(Base):
__tablename__ = 'parent'
id = Column(Integer, primary_key=True)
children = relationship("Child", back_populates="parent")
class Child(Base):
__tablename__ = 'child'
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey('parent.id'))
parent = relationship("Parent", back_populates="children")
Base.metadata.create_all(engine)这段代码使用了SQLAlchemy的声明式基类模式,通过定义Parent和Child两个模型类,并在Child类中使用ForeignKey指定了与Parent的外键关系。同时,它展示了如何使用relationship函数定义双向关联,以及如何通过back_populates参数建立反向关系。这样的代码结构更清晰,也更符合SQLAlchemy的推荐用法。