ошибка в коде Postgresql

defbot

Новичок
Пользователь
Фев 20, 2023
2
0
1
Код для записи ID пользователя в базу на сервер и рассылки сообщений пользователям.
На сервере создается таблица, но данные в таблицу не добавляются. Прошу помощи!

Python:
import psycopg2 as ps

base = ps.connect(DATABASE_URL, sslmode='require')
cur = base.cursor()

async def main_menu (message):
    cur.execute("""CREATE TABLE IF NOT EXISTS log_id(us_id INTEGER)""")
    base.commit()
    user_id = message.chat.id
    cur.execute(f"SELECT * FROM log_id WHERE us_id = (%s);, {user_id}")
    data = cur.fetchone()
    if data is None:
        cur.execute("INSERT INTO log_id (us_id) VALUES (%s);", (user_id,))
        base.commit()
    else:
        pass
    await bot.send_message(message.from_user.id, "Привет, {}!".format(message.from_user.first_name))
    await bot.send_message(message.from_user.id, "Выбери категорию  \U00002B07",
                           reply_markup=mainmenu_kb)

async def sendall(message: types.Message):
    if message.chat.type == 'private':
        if message.from_user.id == ADMIN:
            text = message.text[9:]
            users = cur.execute("SELECT us_id, active FROM log_id").fetchall()
            for row in users:
                try:
                    await bot.send_message(row[0], text)
                    if int(row[1]) != 1:
                        user_id = row[0]
                        active = row[1]
                        cur.execute("UPDATE log_id SET active = %s WHERE us_id = %s;", (us_id, active))(row[0], 1)
                        base.commit()
                except:
                    user_id = row[0]
                    active = row[1]
                    cur.execute("UPDATE log_id SET active = %s WHERE us_id = %s;", (us_id, active))(row[0], 0)
                    base.commit()
            await bot.send_message(message.from_user.id, "Успешная рассылка!")
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 650
472
83
cur.execute(f"SELECT * FROM log_id WHERE us_id = (%s);, {user_id}")

не используйте f строки в запросах к базе, и формат через % тоже не нужно
и все перемешали, f строки, старый формат через %
используйте синтаксис ? (знак вопроса)
Python:
cur.execute("SELECT * FROM log_id WHERE us_id = ?", (user_id,))

рассылки сообщений пользователям.
спам?
 

defbot

Новичок
Пользователь
Фев 20, 2023
2
0
1
не используйте f строки в запросах к базе, и формат через % тоже не нужно
и все перемешали, f строки, старый формат через %
используйте синтаксис ? (знак вопроса)
Python:
cur.execute("SELECT * FROM log_id WHERE us_id = ?", (user_id,))


спам?
Спасибо за ответ! Не спам... бот для отдела кадров на предприятии для информирования рабочих, поскольку не у всех есть корпоративная электронная почта.
 

Форум IT Специалистов