По сути, я создал базу данных, в обычном полном запросе, это код, который я использовал, и сгенерированный ответ.
db.session.query(User).all()
Сгенерированные запросы:
<User(email='howard@howard.com', fullname='Howard', company='howard', address='None', password='howard')>, <User(email='emailhoward', fullname='None', company='None', address='None', password='passwordhoward')>
Это логично, так как я извлекаю все из таблицы. Однако, когда я пытаюсь использовать load_only, чтобы специально выбрать один столбец, в данном случае, столбец электронной почты. Код, который я использовал:
db.session.query(User).options(load_only(User.address)).all()
db.session.query(User).options(load_only('email')).all()
Обе команды дают одинаковые результаты:
<User(email='howard@howard.com', fullname='Howard', company='howard', address='None', password='howard')>,<User(email='emailhoward', fullname='None', company='None', address='None', password='passwordhoward')>
Что очень странно, потому что я должен получить только один столбец в запросе. Однако, когда я использую это:
db.session.query(User.email).select_from(User).filter_by(email=email).first()[0]
он волшебным образом возвращает только один столбец для меня. Мне нужно было использовать load_only, так как у меня есть динамические таблицы, в которых я хочу повторно использовать одну и ту же функцию, а не поддерживать множество наборов функций. Кто-нибудь может посоветовать, в чем проблема с командой load_only, или я что-то не так делаю?
Спасибо.