@krigerl

Где у меня ошибка в sqlite3?

Вылезает такая ошибка: sqlite3.OperationalError: near "order": syntax error

async def add_order(self, order, name, tg, number, amount, promo, date):
        with self.connection:
            return self.cursor.execute(f'INSERT INTO orders (order, name, tg, number, amount, promo, date) VALUES (?, ?, ?, ?, ?, ?, ?)',
                                       [order, name, tg, number, amount, promo, date])

Просто косяк, но никак не могу найти, такая таблица существует, столбец order тоже
  • Вопрос задан
  • 147 просмотров
Решения вопроса 2
@o5a
order в SQL является ключевым словом. Поэтому лучше не использовать его в названиях таблиц, полей. На это и ругается.

Если уж назвали, то заключайте в кавычки:
return self.cursor.execute(f'INSERT INTO orders ("order", name, tg, number, amount, promo, date) VALUES (?, ?, ?, ?, ?, ?, ?)',
                                       [order, name, tg, number, amount, promo, date])
Ответ написан
Mike_Ro
@Mike_Ro Куратор тега Python
Python, JS, WordPress, SEO, Bots, Adversting
Вы используете зарезервированное в sql слово order, для названия столбца. Если другого варианта нет, то можно обернуть его кавычками. Да и f строки не рекомендуется использовать при работе с sql (Почему не стоит использовать f строки в SQL Python запросах? и Как сделать безопасно строку с sql запросом и различными параметрами?).

Попробуйте так:
async def add_order(self, order, name, tg, number, amount, promo, date):
    with self.connection:
        return self.cursor.execute('INSERT INTO orders ("order", name, tg, number, amount, promo, date) VALUES (?, ?, ?, ?, ?, ?, ?)', (order, name, tg, number, amount, promo, date))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Hackerman1
@Hackerman1
17 лет, плохое зрение.
Ты должен передавать не список, а кортеж. Вот как пример из моего кода.
photo_info = (file, md5_hash, add_date, author_id, moderated)
                db_cursor.execute("""INSERT INTO photo 
                        (file_name, md5, add_date, author_id, moderated) 
                        VALUES (?, ?, ?, ?, ?)
                        """, photo_info)
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы