Sé libre de compartir nuestro espacio y códigos en tus redes, necesitamos tu ayuda para ampliar esta comunidad.
Solución:
No necesita agregar nada directamente a su tabla de asociación, SQLAlchemy lo hará. Esto es más o menos de las documentaciones de 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.session.commit()
Por lo tanto, su muestra sería así:
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)
students = db.relationship("Student",
secondary=student_identifier)
s = Student()
c = Class()
c.students.append(s)
db.session.add(c)
db.session.commit()
Antes que nada, student_identifier
se define como una tabla de reflexión de SQLAlchemy, no como una base de datos.
Normalmente, si tiene todas las relaciones configuradas correctamente entre los modelos y los objetos de la tabla de reflexión, solo necesitará tratar con modelos relacionados (agregando objetos de modelo a la relación InstrumentList) para insertar datos en las tablas de reflexión, por ejemplo, la respuesta @ mehdi-sadeghi proporcionado anteriormente.
Sin embargo, existe una forma de insertar directamente en las tablas de reflexión si no desea configurar la relación. Por ejemplo:
statement = student_identifier.insert().values(class_id=cl1.id, user_id=sti1.id)
db.session.execute(statement)
db.session.commit()
Después de eso, debería poder ver que se inserta una fila de relación de muchos a muchos en el student_identifier
mesa de reflexión No olvide confirmar después de ejecutar cada instrucción SQL como se hace en una transacción.
Espero que te ayude con un enfoque alternativo.
Puntuaciones y comentarios
Agradecemos que quieras asentar nuestra labor añadiendo un comentario y valorándolo te estamos eternamente agradecidos.