Python SQLAlchemy多对多外键关联时表结构

 1 # 创建多对多表结构
 2 from sqlalchemy.ext.declarative import declarative_base
 3 from sqlalchemy.engine import create_engine
 4 from sqlalchemy import INTEGER, Column, CHAR, ForeignKey
 5 from sqlalchemy.orm import relationship
 6 Base = declarative_base()
 7 class Book(Base):
 8     __tablename__ = 'book'
 9     id = Column(INTEGER, primary_key=True)
10     name = Column(CHAR(20), nullable=False)
11     b2t = relationship('Tag', backref='t2b', secondary='booktag')
12 
13     def __str__(self):
14         return self.name
15 
16 
17 class Tag(Base):
18     __tablename__ = 'tag'
19     id = Column(INTEGER, primary_key=True)
20     name = Column(CHAR(20), nullable=False)
21 
22     def __str__(self):
23         return self.name
24 
25 
26 class BookTag(Base):
27     __tablename__ = 'booktag'
28     id = Column(INTEGER, primary_key=True)
29     # ondelete、onupdate设置为同步更新、同步删除,代码中对应的值为CASCADE,应注意,否则在进行数据删除时将会报错。
30     book_id = Column(INTEGER, ForeignKey('book.id', ondelete='CASCADE', onupdate='CASCADE'))
31     tag = Column(INTEGER, ForeignKey('tag.id', ondelete='CASCADE', onupdate='CASCADE'))
32 
33 
34 engine = create_engine("mysql+mysqlconnector://root:@127.0.0.1:3306/sqlalchemy?charset=utf8")
35 if __name__ == '__main__':
36     Base.metadata.create_all(engine)

 

转载于:https://www.cnblogs.com/zepc007/p/10403112.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值