sqlalchemy框架多对多表关系中关联表数据的添加与删除

本文介绍使用SQLAlchemy框架实现多对多表关系中关联表数据的添加与删除操作。通过具体示例展示如何建立学生与课程之间的关联关系,并演示如何进行添加及移除关联。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sqlalchemy框架多对多表关系中关联表数据的添加与删除

表关系如下:

#关联关系表
t_stu_course = db.Table(
    't_stu_course',
    db.Column('sid',db.Integer,db.ForeignKey('stu.id',ondelete='cascade')),
    db.Column('cid',db.Integer,db.ForeignKey('course.id',ondelete='cascade'))
)
#学生表
class Stu(db.Model):
    __tablename__ = 'stu'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True,nullable=False)
    sname = db.Column(db.String(32),nullable=False)
    course_s = db.relationship(
        'Course',
        backref = db.backref('stu_s',lazy='dynamic'),
        lazy = 'dynamic',
        secondary = 't_stu_course'
    )
#课程表
class Course(db.Model):
    __tablename__ = 'course'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True,nullable=False)
    cname = db.Column(db.String(32),nullable=False)

假设数据库中已有数据学生s1,课程c1。添加关联关系,s1选修了c1。

if __name__ == '__main__':
	app = Flask(__name__)
	#数据库连接
	app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:xxxxx@localhost:3306/flask_orm1'
	db = SQLAlchemy(app)
	
 	s1 = Stu.query.filter(Stu.sname=='s1').first()
    c1 = Course.query.filter(Course.cname=='c1').first()
	#学生s1的课程中添加c1
	s1.course_s.append(c1)
	#需要session提交
    db.session.commit()

删除关系学生s1选修了课程s1

	#学生s1的课程中删除c1
	s1.course_s.remove(c1)
	#需要session提交
    db.session.commit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值