2013-09-20 4 views
0

У меня возникли проблемы с операторами sql, когда я пытаюсь вставить данные, которые, похоже, работают, но когда я проверяю таблицу, там ничего нет. Я пытаюсь вставить данные, используя следующую инструкцию:SQLite3 python не работает?

cursor.execute("INSERT INTO song (title,artist) VALUES (\'{0}\',\'{1}\')".format(tit,art)) 

Однако, когда я делаю это через терминал по следующему пути, он работает:

cursor.execute("INSERT INTO song (title,artist) VALUES ('Hide','Yellowcard')") 

Я попытался также с% s, чтобы заменить строку не работает.

ответ

3

Необходимо использовать параметры SQL; sqlite3 библиотека использует ? заполнители:

cursor.execute("INSERT INTO song (title, artist) VALUES (?, ?)", (tit, art)) 

Это имеет дополнительное преимущество, что sqlite3 будет выяснить для вас, как процитировать каждое значение, предотвратить атаки SQL-инъекции, и дает к базе данных с возможностью кэширования плана запроса для запрос и просто слот в будущих значениях.

Обязательно совершите транзакцию.

+0

Это очень помогает. – Ricardo

Смежные вопросы