Я пытаюсь выбрать некоторые данные из базы данных с помощью 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
затем, если вы хотите, чтобы петля все те, с идентификатором класса 1 и 2. И получить их имена
id class_name role_name
1 'A' 'Student'
2 'A' 'Student'
2 'B' 'Student'
EDIT
мне удалось получить классы, но без предложения.
db.session.query(
User.user_fistName,
Role.role_name,
Class.class_name
).join(Role).filter_by(role_name='Student').filter(User.classes)
Hello @TNT. Ваш код работает, а это значит, что моя модель тоже работает? Но дело в том, что я хочу выбрать предложение «in», чтобы выбрать всех учеников с идентификатором класса, например 1 и 2. И, как я вижу, ваше предложение также присоединяется к классам. Как и пользователь 1 имеет 2 класса, поэтому в 'users_classes' он будет печатать поле со всеми его классами. Я хочу, чтобы он печатал 2 разных строки одним и тем же человеком, как и последний пример, который я опубликовал. Но я ценю помощь, которую вы предложили до сих пор. – Sigils
привет @ TNT. Посмотрите мое последнее редактирование. Мне удалось получить классы, но без предложения. – Sigils
Я не уверен, что вы имеете в виду с * в пункте *. Ваша проблема решена или вам нужен код, который отображает результаты? – TNT