【发布时间】:2014-12-22 09:52:31
【问题描述】:
当我尝试加入 many-to-many 表并按 main-id 分组时,我得到 duplicates添加第二个多对多表。
这是我的模型的样子:
型号
用户
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
user_fistName = db.Column(db.String(64))
...
student_identifier
student_identifier = db.Table('student_identifier',
db.Column('class_id', db.Integer, db.ForeignKey('class.class_id')),
db.Column('id', db.Integer, db.ForeignKey('user.id'))
)
类
class Class(db.Model):
sqlite_autoincrement=True
class_id = db.Column(db.Integer, primary_key=True)
class_name = db.Column(db.String(128), unique=True)
mm_children = db.relationship('User', secondary=student_identifier, backref=db.backref('classes'))
class_course_identifier
class_course_identifier = db.Table('class_course_identifier',
db.Column('course_id', db.Integer, db.ForeignKey('course.course_id')),
db.Column('class_id', db.Integer, db.ForeignKey('class.class_id'))
)
数据库结构
我正在使用 SQLAlchemy 来选择包含我想要的数据的所需表。用这个 session.query
db.session.query(
Class.class_id,
Class.class_name,
func.group_concat(User.user_fistName),
func.group_concat(Course.course_name)
).filter(Class.courses, User.classes).group_by(Class.class_id)
问题是我得到了课程和名称的重复,所以如果课程有两个用户,它将打印学生和课程两次。 这是它的外观:
错误的观点
它应该是这样的:
正确的看法
问题
当我添加第二个 many-to-many 表时,问题就来了,例如 users/student-identifier。如果我删除我“加入”它的行,我会得到重复项。无论如何要纠正这个问题吗?或者我应该改用 RAW-SQL(如果是,如何?)
【问题讨论】:
-
旁注。我相信这是名字而不是名字
标签: python flask sqlalchemy flask-sqlalchemy