здравствуйте, я новичок в программировании, создаю бота с субд 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]:
return "В этом месяце ещё не было расходов."
all_month_expenses = result[0]
cursor.execute(
"SELECT DISTINCT user_id "
"FROM expenses "
f"AND user_id = {user_id}"
)
result = []
return (f"Всего потрачено: {all_month_expenses}\n")
выдает ошибку: TypeError: get_month_stats() missing 1 required positional argument: ‘year_month’
Пожалуйста, подскажите как решить
AlexP
(Alex P.)
21.Март.2022 06:23:57
#2
Видимо при вызове функции get_month_stats
вы не передаете туда второй её параметр.
1 лайк
функция вызывается здесь
@dp.message_handler(lambda message: message.text == buttons.content_mnth_stats)
async def get_month_statistics(message: types.Message):
now_year_month = expenses.get_year_month_now()
stats_str = expenses.get_month_stats(now_year_month)
kb = buttons.mrkup_chs_month_stats(expenses.get_budget_months(user_id))
await message.answer(text(bold("Расходы за месяц\n\n")) +
stats_str,
parse_mode=ParseMode.MARKDOWN,
reply_markup=kb)
AlexP
(Alex P.)
21.Март.2022 06:52:09
#4
ну так вот тут передается один параметр
а тут объявлены два
и при вставке кода на форумы надо нажимать кнопку Код .
про код, спасибо, учту
изменила строчку на stats_str = expenses.get_month_stats(user_id, now_year_month)
но теперь выдает ошибку
NameError: name ‘user_id’ is not defined
Извините если я прям очень тупые вопросы задаю…
AlexP
(Alex P.)
21.Март.2022 07:09:46
#6
Переменной с именем user_id
в этом коде и правда не видно
спасибо, с этим проблема решена
теперь следующая ошибка
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]:
return "В этом месяце ещё не было расходов."
all_month_expenses = result[0]
cursor.execute(
"SELECT SUM(e.amount) "
"FROM expenses e "
f"WHERE STRFTIME('%Y-%m', created) = '{year_month}'"
f"AND user_id = {user_id}"
)
result = []
return (f"Всего потрачено: {all_month_expenses}\n")
in get_month_stats
cursor.execute(
sqlite3.OperationalError: near “(”: syntax error