У меня есть sqlalchemy, который подсчитывает строки со значением «3», а затем выводит их количество. Он отлично работает, если счетчик равен 1, 2, 3, et c, но когда элементов нет, он ничего не печатает. Я хотел, чтобы он напечатал 0. Поэтому я добавил оператор if / else, который не работал (он ничего не печатает, без ошибок).
Как мне это сделать? Вот мой текущий код - не совсем уверен, должен ли я выполнять эту часть в sqlalchemy или python.
q = (db.session.query(Article.snippet, sa.func.count(ArticleVote.id))
.join(ArticleVote, Article.id == ArticleVote.article_id)
.filter(Article.snippet == a_obj.snippet)
.filter(ArticleVote.vote_choice_id == 3)
.group_by(Article.snippet))
for snippet, count in q:
if count is None:
threevotes = 0
else:
threevotes = count
print(snippet, count)
print("threevotes", threevotes)
Обновление: я сделал это внешнее соединение. Это не помогло.
.join(ArticleVote, Article.id == ArticleVote.article_id, isouter=True)
Обновление: я нашел обходной путь. Я не думаю, что это правильный способ делать что-то, и я обеспокоен, что это может быть проблематично c в будущем, поэтому, если у кого-то есть идея получше (или он может сказать мне, может ли это быть проблематично *) 1014 *) было бы здорово.
if 'threevotes' in locals():
print("threevotes in locals")
else:
print("threevote not in locals")
threevotes= 0