我正在尝试使用基于 sql alchemy ORM 的数据库定义。我已将我的表定义如下
class Customer(Base):
__tablename__ = 'customer'
id = Column(Integer, primary_key=True)
name = Column(String(80))
auth = relationship("CustomerAuth", backref='customer')
class CustomerAuth(Base):
__tablename__ = 'authentication'
id = Column(Integer, ForeignKey('customer.id'))
username = Column(String(80), primary_key=True)
passwd = Column(String(80))
现在我正在创建会话
Session = sessionmaker(bind=sqla.engine)
session = Session()
然后我尝试为 ID 为 1 和 2 的客户创建两个行对象
cst1 = sqla.Customer(id=1,name='shyam')
cst2 = sqla.Customer(id=2,name='ram')
我为 CustomerAuth 创建了三个行对象,它们引用了 Customer 的 id 1、2 和 3
auth1 = sqla.CustomerAuth(id=1,username='shyamu',passwd='wam')
auth2 = sqla.CustomerAuth(id=2,username='ramu',passwd='dam')
auth3 = sqla.CustomerAuth(id=3,username='lamu',passwd='sam')
如您所见,我创建了一个 id = 3 的 CustomerAuth 行,这是一个引用 Customer.id 的外键。但是由于 Customer 表没有 id=3 的条目,这应该会失败
session.add(cst1)
session.add(cst2)
session.add(auth1)
session.add(auth2)
session.flush()
此操作应该会失败,但它会成功完成。
session.add(auth3)
session.flush()
我想知道我没有做什么绕过外键强制执行
提前致谢