本实验所用代码来源于官网文档
from sqlalchemy import Table, Column, Integer, String, ForeignKey from sqlalchemy.orm import relationship, backref from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() '''关联表删除实验''' class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String) password = Column(String) addresses = relationship("Address", back_populates='user', cascade="all, delete, delete-orphan") def __repr__(self): return "<User(name='%s', fullname='%s', password='%s')>" % ( self.name, self.fullname, self.password) class Address(Base): __tablename__ = 'addresses' id = Column(Integer, primary_key=True) email_address = Column(String, nullable=False) user_id = Column(Integer, ForeignKey('users.id')) user = relationship("User", back_populates="addresses") def __repr__(self): return "<Address(email_address='%s')>" % self.email_address from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker DB_CONNECT_STRING = 'sqlite://' # 'sqlite:///:memory:' engine = create_engine(DB_CONNECT_STRING, echo=False) DB_Session = sessionmaker(bind=engine) session = DB_Session() # 1. 创建表 Base.metadata.create_all(engine) # 2. 插入数据 some_users = [User(id=1, name='张三', password='111111'), User(id=2, name='李四', password='222222'), User(id=3, name='王五', password='333333'), User(id=4, name='赵六', password='444444')] session.add_all(some_users) some_addresses = [Address(id=1, email_address='zhang@163.com', user_id=1), Address(id=2, email_address='zhang@qq.com', user_id=1), Address(id=3, email_address='li@163.com', user_id=2), Address(id=4, email_address='wang@163.com', user_id=3), Address(id=5, email_address='zhao@163.com', user_id=4)] session.add_all(some_addresses) session.commit() #关联表删除实验 zhangsan = session.query(User).get(1) # 删除!! del zhangsan.addresses[1] res = session.query(Address).filter(Address.email_address.in_(['zhang@163.com', 'zhang@qq.com'])).count() print(res) # 结果为 1 # 删除!! session.delete(zhangsan) res = session.query(User).filter_by(name='张三').count() print(res) # 结果为 0 res = session.query(Address).filter(Address.email_address.in_(['zhang@163.com', 'jzhang@qq.com'])).count() print(res) # 结果为 0转载于:https://www.cnblogs.com/hhh5460/p/6562659.html
相关资源:JAVA上百实例源码以及开源项目