Сначала мне удалось решить эту проблему, но я не понимаю, почему мой первый подход не работает. Будем рады за помощь.
Я использовал order_by, чтобы присоединиться и получил ошибку, если попытался объединить результат
Это для Flask и sqlalchemy в базе данных sqlite3.
Я знаю, что это избыточно, я попытался объединить две таблицы и объединить результат с другим запросом. При сортировке (order_by) объединения я получаю исключение в объединении.
Оригинальный подход -
def followed_posts(self):
followed = Post.query.join(
followers,
(followers.c.followed_id == Post.user_id)
).filter(
followers.c.follower_id == self.id
).order_by(
Post.timestamp.desc()
)
return followed.union(self.posts)
Это не удалось с: "sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) возле" UNION ": синтаксическая ошибка"
Когда я пытаюсь вернуть followed
без объединения, ошибки не возникает. но это не то, что мне нужно.
def followed_posts(self):
followed = Post.query.join(
followers,
(followers.c.followed_id == Post.user_id)
).filter(
followers.c.follower_id == self.id
).order_by(
Post.timestamp.desc()
)
return followed
когда я перемещаю order_by из объединения в объединение, оно работает без проблем.
def followed_posts(self):
followed = Post.query.join(
followers,
(followers.c.followed_id == Post.user_id)
).filter(
followers.c.follower_id == self.id
)
return followed.union(self.posts).order_by(Post.timestamp.desc())
Так что это решаемо, но я не понимаю, почему оригинальный подход вернул ошибку.