SQLAlchemy2.0中解决SQLite3外键约束无效问题
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的推荐用法。
评论已关闭