SQL заявление с как из переменной - PullRequest
1 голос
/ 25 мая 2011

Я выполняю этот код в Python

from sqlite3 import dbapi2 as sqlite

con = sqlite.connect("db.sqlite")
cur = con.cursor()
surname = "'%atton%'"
cur.execute("select id from singers where surname like :surname", locals())
cur.close()
con.close()

После этого кода cur.rowcount == -1 но Паттон находится в базе данных.

Является ли мой оператор SQL плохим?

спасибо

1 Ответ

5 голосов
/ 25 мая 2011

Параметризация DB-API, которую вы используете (которую вы должны использовать, не изменяйте это) означает, что фамилия будет автоматически указана или будет экранирована соответствующим образом. Вы должны удалить внутренний набор цитат из вашей строки surname.

surname = "%atton%"
cur.execute("select id from singers where surname like :surname",
    dict(surname=surname))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...