Size: a a a

2021 October 18

AK

Aidar Khaidarov in Python Flask
Я использую flask_sqlalchemy и почему у меня, если я получаю словарь таким образом:
quote_info = Quote.query.filter_by(quote=info_for_quote['quote']).first().__dict__

а далее пытаюсь обратится к словарю по ключу:
author = quote_info["author"]
то у меня выходит ошибка, что такого ключа в словаре нет(KeyError: 'author')


а если я пытаюсь получить данные уже таким образом:
author = Quote.query.filter_by(quote=info_for_quote['quote']).first().__dict
__["author"]
то всё работает корректно.
источник

T

T in Python Flask
Зачем ты вообще так делаешь
источник

AK

Aidar Khaidarov in Python Flask
хочу получить данные из таблицы
источник

AC

All Cats in Python Flask
Так тебе результат запроса итак выдаёт готовый объект, зачем брать словарь

.author и всё
источник

T

Tishka17 in Python Flask
я полагаю там ещё и ленивый релейшн
источник

AC

All Cats in Python Flask
Тогда тем более
источник

AK

Aidar Khaidarov in Python Flask
Могу узнать что это?
источник

T

Tishka17 in Python Flask
почитай что такое lazy у relationship
источник

AC

All Cats in Python Flask
В модели Quote у тебя есть поле relationship?
источник

AK

Aidar Khaidarov in Python Flask
нет, я сам не создавал
источник

AK

Alexander Kamyanskiy in Python Flask
ну а аттрибут author - это сущность из другой таблицы ?
источник

AK

Aidar Khaidarov in Python Flask
нет, из таблицы Quote
источник

AK

Alexander Kamyanskiy in Python Flask
описание этого поля в модели можете показать ?
источник

AK

Aidar Khaidarov in Python Flask
да, щас
источник

AK

Aidar Khaidarov in Python Flask
class Quote(db.Model):
   tablename = 'quotes'

   user_id = db.Column(db.Integer, index=True)
   quote_id = db.Column(db.Integer, primary_key=True, unique=True)
   author = db.Column(db.String, index=True)
   book_title = db.Column(db.String, index=True)
   quote = db.Column(db.String, index=True)
источник

AC

All Cats in Python Flask
А зачем ты везде индексы понапихал?
источник

AC

All Cats in Python Flask
Короче юзай просто

query = Quote.query.filter_by(quote=info_for_quote['quote']).first()

author = query.author
источник

AK

Aidar Khaidarov in Python Flask
Это да, щас исправлю
источник

AK

Aidar Khaidarov in Python Flask
премногу благодарен
источник

AK

Alexander Kamyanskiy in Python Flask
а через точку .author всегда работает ?
источник