@GaMis

DISCORD BOT sqlite3.OperationalError: near "#": syntax error почему такая ошибка?

Я делал discord бота и решил проверить его работа способность.
Мне высветилась ошибка sqlite3.OperationalError: near "#1234": syntax error.
Смотрел другие вопросы не было понятного мне ответа.

КОД

async def on_member_join(member):
if cursor.execute(f'SELECT id FROM users WHERE id = {member.id}').fetchone() is None:
cursor.execute(f'INSERT INTO users VALUES ({member}, {member.id}, 0, 0, 1)') #здесь ошибка
connection.commit()
else:
pass

Как исправить.
Бот на сервере есть он в сети но с кодом что-то не так.
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Не формируй SQL-запросы форматированием строк! Особенно если не знаешь SQL достаточно. Либо поймаешь ошибку синтаксиса, либо SQL-инъекцию.

Используй placeholders, как показано в документации к модулю.

import sqlite3

con = sqlite3.connect(":memory:")
cur = con.cursor()
cur.execute("create table lang (name, first_appeared)")

# This is the qmark style:
cur.execute("insert into lang values (?, ?)", ("C", 1972))

# The qmark style used with executemany():
lang_list = [
    ("Fortran", 1957),
    ("Python", 1991),
    ("Go", 2009),
]
cur.executemany("insert into lang values (?, ?)", lang_list)

# And this is the named style:
cur.execute("select * from lang where first_appeared=:year", {"year": 1972})
print(cur.fetchall())

con.close()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы