Задать вопрос
@SHaFepSHa

Sqlite3 операционная ошибка, как исправить?

Провдвинулся в своем прогрессе но встал сново
with sq.connect("DB/banking_app.db") as db:
    c = db.cursor()
    c.execute(""" CREATE TABLE IF NOT EXISTS banking_application( 
        name_p TEXT,
        number_p INTEGER,
        many_p INTEGER
        )""")

def take():
    com = comB.get()
    pop = ''.join(str(com))
    print(pop)
    c.execute(f"SELECT * from banking_application WHERE name_p IS {pop}")
    p = c.fetchall()
    name_result.configure(text=f'{p}')

смешное то что когда в name_p стоит число(хотя тип данных текст) оно работает и все выводит, но вставляя текст он выдает ошибку
sqlite3.OperationalError: near "Gleb": syntax error

если нужна функция добавления то вот
else:
        c.execute(f"INSERT INTO banking_application VALUES (?, ?, ?)", (s_ent1.get(), s_ent2.get(), s_ent3.get()))
        db.commit()
        db.close()
        mb.showinfo(
            "Успешно",
            "Данные пользователя добавленвы"
        )
  • Вопрос задан
  • 89 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
c.execute(f"SELECT * from banking_application WHERE name_p IS {pop}")

За такое бьют линейкой по пальцам. Собственно, ты уже наткнулся на одну из причин почему. Вторая тут.
Ну и да, IS используется только как IS NULL или IS NOT NULL. Надо вот так:
c.execute("SELECT * from banking_application WHERE name_p = ?", pop)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Не использовать интерполяцию строк для формирования запросов.
Ответ написан
Ваш ответ на вопрос

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

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