Flask sqlalchemy多对多插入数据

编程入门 行业动态 更新时间:2024-10-26 06:29:40
本文介绍了Flask sqlalchemy多对多插入数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我试图在 Flask-SQLAlchemy 中创建一个多对多的关系,但似乎我不知道如何填充多对多标识符数据库的。你能帮我理解我做错了什么,它应该怎样看?

(db.Model): __tablename__ ='users' user_id = db.Column(db.Integer,primary_key = True) user_fistName = db.Column(db.String(64 )) user_lastName = db.Column(db.String(64)) user_email = db.Column(db.String(128),unique = True) class Class(db.Model): __tablename__ ='classes'$ b $ class_id = db.Column(db.Integer,primary_key = True) class_name = db.Column(db.String (128),unique = True)

然后我的标识符数据库:

student_identifier = db.Table('student_identifier', db.Column('class_id',db.Integer,db.ForeignKey('classes。 ('user_id',db.Integer,db.ForeignKey('users.user_id'))) pre>

so f当我尝试将数据插入数据库时​​,它看起来像这样。

#User user1 = User( user_fistName ='John', user_lastName = 'Doe', user_email='john@doe.es') user2 = User( user_fistName ='Jack', user_lastName ='Doe', user_email='jack@doe.es') user3 = User( user_fistName ='Jane', user_lastName ='Doe', user_email='jane@doe.es') db.session.add_all([user1,user2,user3]) db.sessionmit() #Class cl1 = Class(class_name ='0A') cl2 = Class(class_name ='0B') cl3 = Class(class_name ='0C') cl4 = Class(class_name ='Math') cl5 = Class(class_name ='Spanish') db.session.add_all([cl1,cl2,cl3,cl4,cl5]) db .sessionmit()

现在我的问题是,如何添加到多对多的数据库,因为我真的不能创建一个student_identifier对象?如果可能的话,也许可能看起来像这样: $ $ p $ $ $ $ $ class_id,class_name = user1.user_id) sti2 = StiClass(class_id = cl3.class_id,class_name = user1.user_id) sti3 = StiClass(class_id = cl4.class_id,class_name = user1.user_id) sti4 = StiClass(class_id = cl2.class_id,class_name = user2.user_id) db.session.add_all([sti1,sti2,sti3,sti4]) db.sessionmit()

我应该如何使用ORM插入到许多表中?

$ b $你不需要添加任何东西直接到你的关联表,SQLAlchemy会做到这一点。这或多或少来自 SQLAlchemy文档:

association_table = db.Table('association',db.Model.metadata, db.Column('left_id',db.Integer ,db.ForeignKey('left.id')), db.Column('right_id',db.Integer,db.ForeignKey('right.id'))) class Parent(db.Model): __tablename__ ='left' id = db.Column(db.Integer,primary_key = True) children = db.relationship(Child , secondary = association_table) class Child(db.Model): __tablename__ ='right' id = db.Column(db.Integer,primary_key = True) p = Parent()c = Child() p.children.append(c) db.session.add(p ) db.sessionmit()

因此,您的示例将如下所示:

student_identifier = db.Table( 'student_identifier', db.Column('class_id',db.Integer,db.ForeignKey('classes.class_id')), db.Column('user_id',db.Integer,db。 ForeignKey('students.user_id'))) class Student(db.Model): __tablename__ ='students' user_id = db.Column(db .Integer,primary_key = True) user_fistName = db.Column(db.String(64)) user_lastName = db.Column(db.String(64)) user_email = db.Column (db.String(128),unique = True) $ b $ class Class(db.Model): __tablename__ ='classes'$ b $ class_id = db.Column (db.teger,primary_key = True) class_name = db.Column(db.String(128),unique = True) children = db.relationship(Student, secondary = student_identifier) $ bs = Student()c = Class() c.children.append(s) db.session.add(c) db.sessionmit()

I am trying to make a many to many relation here in Flask-SQLAlchemy, but it seems that I don't know how to fill the "many to many identifier database". Could you please help me understand what I am doing wrong and how it is supposed to look?

class User(db.Model): __tablename__ = 'users' user_id = db.Column(db.Integer, primary_key=True) user_fistName = db.Column(db.String(64)) user_lastName = db.Column(db.String(64)) user_email = db.Column(db.String(128), unique=True) class Class(db.Model): __tablename__ = 'classes' class_id = db.Column(db.Integer, primary_key=True) class_name = db.Column(db.String(128), unique=True)

and then my identifier database:

student_identifier = db.Table('student_identifier', db.Column('class_id', db.Integer, db.ForeignKey('classes.class_id')), db.Column('user_id', db.Integer, db.ForeignKey('users.user_id')) )

so far it looks like this when I try to insert the data into the database.

# User user1 = User( user_fistName='John', user_lastName='Doe', user_email='john@doe.es') user2 = User( user_fistName='Jack', user_lastName='Doe', user_email='jack@doe.es') user3 = User( user_fistName='Jane', user_lastName='Doe', user_email='jane@doe.es') db.session.add_all([user1, user2, user3]) db.sessionmit() # Class cl1 = Class(class_name='0A') cl2 = Class(class_name='0B') cl3 = Class(class_name='0C') cl4 = Class(class_name='Math') cl5 = Class(class_name='Spanish') db.session.add_all([cl1, cl2, cl3, cl4, cl5]) db.sessionmit()

Now my problem is, how do I add to the many to many database, since I really can't create a 'student_identifier' object? If I could it could perhaps have looked like this:

# Student Identifier sti1 = StiClass(class_id=cl1.class_id, class_name=user1.user_id) sti2 = StiClass(class_id=cl3.class_id, class_name=user1.user_id) sti3 = StiClass(class_id=cl4.class_id, class_name=user1.user_id) sti4 = StiClass(class_id=cl2.class_id, class_name=user2.user_id) db.session.add_all([sti1, sti2, sti3, sti4]) db.sessionmit()

How I am supposed to insert into a many to many table with ORM?

解决方案

You don't need to add anything directly to your association table, SQLAlchemy will do that. This is more or less from SQLAlchemy documentations:

association_table = db.Table('association', db.Model.metadata, db.Column('left_id', db.Integer, db.ForeignKey('left.id')), db.Column('right_id', db.Integer, db.ForeignKey('right.id')) ) class Parent(db.Model): __tablename__ = 'left' id = db.Column(db.Integer, primary_key=True) children = db.relationship("Child", secondary=association_table) class Child(db.Model): __tablename__ = 'right' id = db.Column(db.Integer, primary_key=True) p = Parent() c = Child() p.children.append(c) db.session.add(p) db.sessionmit()

Therefore your sample would be like this:

student_identifier = db.Table('student_identifier', db.Column('class_id', db.Integer, db.ForeignKey('classes.class_id')), db.Column('user_id', db.Integer, db.ForeignKey('students.user_id')) ) class Student(db.Model): __tablename__ = 'students' user_id = db.Column(db.Integer, primary_key=True) user_fistName = db.Column(db.String(64)) user_lastName = db.Column(db.String(64)) user_email = db.Column(db.String(128), unique=True) class Class(db.Model): __tablename__ = 'classes' class_id = db.Column(db.Integer, primary_key=True) class_name = db.Column(db.String(128), unique=True) children = db.relationship("Student", secondary=student_identifier) s = Student() c = Class() c.children.append(s) db.session.add(c) db.sessionmit()

更多推荐

Flask sqlalchemy多对多插入数据

本文发布于:2023-10-26 22:03:13,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据   Flask   sqlalchemy

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!