使用Flask-SQLAlchemy选择多对多

印记

我正在尝试使用Flask-SQLAlchemy从数据库中选择一些数据。但是,我正在努力获取正确的数据并与多对多连接。

我的模型看起来像这样。

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_firstName = db.Column(db.String(64))
    ...
    role_id = db.Column(db.Integer, db.ForeignKey('role.role_id'))


class Role(db.Model):
    role_id = db.Column(db.Integer, primary_key=True)
    role_name = db.Column(db.String(64), unique=True)
    users = db.relationship('User', backref='role')

然后我想使用backref来获得很多
注释的表

class Class(db.Model):
    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'))

这是保存多对多信息(用户和类之间的链接)的表

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'))
)

可以说我的数据库中有这个

User
id          user_firstName  role_id
1           'John'          3
2           'Jane'          3
3           'Jack'          1
4           'Jimmy'         3
5           'Jana'          2


Role
role_id     role_name
1           'Admin'
2           'Teacher'
3           Student'


Class
class_id    class_name
1           'A'
2           'B'
3           'C'

student_identfier
class_id    id
1           1
1           2
2           2
3           1
1           4

student_identfier
class_id        id
1               1
1               2
2               2
3               1
1               4

然后,如果您要循环所有具有类ID 1和2的对象,并获取它们的名称

id      class_name   role_name
1       'A'          'Student'
2       'A'          'Student'

2       'B'          'Student'



编辑
我设法得到的类,但没有in子句。

db.session.query(
    User.user_fistName,
    Role.role_name,
    Class.class_name
).join(Role).filter_by(role_name='Student').filter(User.classes)
TNT

如果您的模型和关系有效,则应该能够执行以下操作:

users = session.query(User).all()
for user in users:
    users_classes = ','.join([c.class_name for c in user.classes])
    print("{0} is {1} in {2}".format(user.user_firstName,
                                     user.role.role_name,
                                     users_classes))

希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Flask-SQLAlchemy多对多

来自分类Dev

使用Flask-SQLAlchemy进行多对多查询

来自分类Dev

Flask-SQLAlchemy查询多对多

来自分类Dev

Flask SQLAlchemy多对多删除元素

来自分类Dev

Flask-SQLAlchemy多对多插入

来自分类Dev

我应该使用flask sqlalchemy多对多关系吗?

来自分类Dev

如何使用flask-sqlalchemy多次插入多对多关系?

来自分类Dev

设置多对多sqlalchemy flask app sqlite db的插入顺序

来自分类Dev

使用GroupBy从多对多中选择

来自分类Dev

使用选择多个显示多对多

来自分类Dev

SqlAlchemy(Postgres + Flask):如何求和多列?

来自分类Dev

SQLAlchemy + Flask多对一关系

来自分类Dev

SqlAlchemy(Postgres + Flask):如何求和多列?

来自分类Dev

SQLAlchemy-使用关联表查询多对多

来自分类Dev

使用sqlalchemy查询使用多列的in子句

来自分类Dev

Jsonify Flask-SQLAlchemy Flask中的多对一关系

来自分类Dev

使用SQLAlchemy,如何返回多列计数

来自分类Dev

使用Flask,WTForm,SQLAlchemy和Jinja2的完整多对一示例

来自分类Dev

如何使用带有额外数据的Flask-sqlalchemy创建多对多关联?

来自分类Dev

使用多对多关系时,Flask-SQLAlchemy返回查询中的对象

来自分类Dev

通过Flask显示好友名称多对多sqlalchemy

来自分类Dev

Flask-Sqlalchemy 3种多对多关系

来自分类Dev

Flask-Sqlalchemy,多对多关系中的辅助表的主键

来自分类Dev

Flask-SQLAlchemy筛选与父模型的多对多关系

来自分类Dev

Flask-SQLAlchemy更新一对多记录

来自分类Dev

Jsonify flask-sqlalchemy烧瓶中的多对一关系

来自分类Dev

Flask-Sqlalchemy,多对多关系中的辅助表的主键

来自分类Dev

在Flask sqlalchemy中订购一对多模型?

来自分类Dev

Flask-SQLAlchemy查询带有多个必需标签的多对多标签

Related 相关文章

热门标签

归档