sqlite3.OperationalError: near "<": syntax error
начинаю учить программировать, использовала субд sqlite, выдает ошибку, как можно решать, подскажите пожалуйста
def get_month_stats(user_id: int, year_month: str) -> str:
cursor = db.get_cursor()
cursor.execute(
"SELECT SUM(amount)"
"FROM expenses "
f"WHERE STRFTIME('%Y-%m', created) = '{year_month}' "
f"AND user_id = {user_id}"
)
result = cursor.fetchone()
if not result[0]:
stats += "В этом месяце ещё не было расходов."
return stats
all_month_expenses = result[0]
cursor.execute(
"SELECT DISTINCT user_id "
"FROM expenses "
f"WHERE user_id = {user_id}"
)
result = cursor.fetchall()
return (f"Всего потрачено: {all_month_expenses}\n")
ошибка: sqlite3.OperationalError: near "<": syntax error
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Подстановка вручную значений в SQL плохая идея, лучше доверить это драйверу SQL:
def get_month_stats(user_id: int, year_month: str) -> str:
cursor = db.get_cursor()
cursor.execute(
"SELECT SUM(amount)"
"FROM expenses "
"WHERE STRFTIME('%Y-%m', created) = ? AND user_id = ?",
(year_month, user_id)
)
result = cursor.fetchone()
if not result[0]:
stats += "В этом месяце ещё не было расходов."
return stats
all_month_expenses = result[0]
cursor.execute(
"SELECT DISTINCT user_id FROM expenses WHERE user_id = ?",
(user_id,)
)
result = cursor.fetchall()
return f"Всего потрачено: {all_month_expenses}\n"