Как получить данные из двух таблиц, используя объединение в peewee Python - PullRequest
0 голосов
/ 04 мая 2020

Есть две таблицы, унаследованные от Model. Предположим, что их имена Table1 и Table2. Мы получаем несколько полей:

res = Table1.select (Table1.name, Table2.token) .join (Table2, on = (Table1.id == Table2.id

Если получено res.name, будет отображаться имя, а при получении res.token возникает ошибка, что Table1 не содержит поле токена.

1 Ответ

0 голосов
/ 04 мая 2020

Это уже неоднократно освещалось. Peewee разрешает объединенные модели в граф модели. Поэтому вы должны использовать:

query = (Tweet
         .select(Tweet.content, User.username)
         .join(User, on=(Tweet.user == User.id)))
for tweet in query:
    # YOUR CODE:
    print(tweet.username, tweet.content)

    # CORRECT:
    print(tweet.user.username, tweet.content)

Как вы можете надеяться, Peewee поместил поле "username" в экземпляр "user", связанный с твитом.

Если вы хотите просто поместите все выбранные атрибуты в исходную модель, затем используйте метод ".objects ()":

# Add .objects() to patch all attributes onto the tweet instance.
for tweet in query.objects():
    # Now "username" is an attribute on tweet:
    print(tweet.username, tweet.content)

Прочитайте документы. Пожалуйста. http://docs.peewee-orm.com/en/latest/peewee/relationships.html

...