В чём разница запросов к БД через sqlalchemy используя query.filter или session.query?
Возникло не понимание в написании запросов к БД через ORM sqlalchemy
Всегда использовал <Таблица>query.filter()
Но в сети и документации используется session.query
role = db.session.query(Role).filter(Role.id == 11).one()
и Role.query.filter(Role.id == 11).one()
но что лучше использовать на практике?
Я правильно понимаю, что при использовании session.query, используются сессии. Т.е. в сессию я могу каждый запрос на добавление/удаление "запихнуть" в пачку и разом записать
В .query - я под каждый запрос создаю сессию и коммит
?????
pcdesign, спасибо.
Не могли бы вы помочь с запросом данных к таблицам M2M
Две таблицы, связаны через третью.
Как имея email пользователя, получить его role.name ?
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), unique=True)
email = db.Column(db.String(100), unique=True)
roles = db.relationship('Role', secondary=roles_users, backref=db.backref('users', lazy='dynamic'))
class Role(db.Model, RoleMixin):
__tablename__ = 'role'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), unique=True)
roles_users = db.Table('roles_users',
db.Column('user_id', db.Integer(), db.ForeignKey('user.id')),
db.Column('role_id', db.Integer(), db.ForeignKey('role.id'))
)