Вставка переменных в SQL — запрос. Python3
Подскажите плиз, не могу вставить в SQL-запрос значение в двойных кавычках.
Сам запрос выглядит так:
SELECT family,name FROM violations WHERE processing_state = 2 LIMIT AND violations.last_edit BETWEEN "2015-11-01" AND "2015-11-02")
Попытка вставить в проекте Python
vs = "2015-11-01" vs2 = "2015-11-02" sql=("SELECT family,name FROM violations WHERE processing_state = 2 LIMIT AND violations.last_edit BETWEEN %s AND %s") cur.execute(sql,(vs,vs2))
В итоге получаю ошибку вида
\'AND violations.last_edit BETWEEN \'\\"2015-11-01\\"\' AND \'\\"2015-11-02\\"\'\' at line 1'
Уже и в двойный, и в одинарные кавычки пытался заключать переменные vs и vs2, не помогает(
Для коннекта к БД Использую PyMySQL.
Вставка переменной в запрос sql

Вставка переменной в запрос
query.exec_("insert into person values(», , », 0, 0,0,0,0,0)") нужно вместо любого 0 поставить.

Вставка переменной в SQL — запрос
Как вставить значение выбранного элемента в комбобоксе в sql-запрос? select * from table where.
Вставка переменной в запрос
Здравствуйте, я делаю фильтрацию таблицы по цене билета и наткнулся на такую проблему. Я ввожу в.
Вставка переменной в запрос к json
data.var?.stats Var — переменная, получаемая от пользователя. JSON возвращает undefined, как нужно.

Вставка переменной в запрос MYSQL
Привет, в результате запроса создаются пустые строки в БД. Есть сомнения по поводу пунктуации.
Передать аргументы из переменных в SQL-запрос
Таким образом не выходит. И еще подскажите, пожалуйста, в моей таблице есть поле used, в котором по умолчанию во всех записях 0 , мне нужно, чтобы запрос обновлял первую попавшуюся запись, где used равно 0 , а остальные не трогал. Благодарю!
Отслеживать
задан 1 апр 2020 в 0:05
Никита Виноградов Никита Виноградов
121 1 1 золотой знак 1 1 серебряный знак 12 12 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Для конкатенции строки с переменными вы можете использовать один из следующих вариантов:
- Обычная конкатенция оператором +
- Форматирования с помощью оператора %
- Использовать метод format() для строк
- Использовать f-строки (только для python 3)
Пример с использованием метода .format()
def insertUser(ID, AUTHOR): con = lite.connect("something.db") with con: cur = con.cursor() sql = """UPDATE someth SET used = 1, dis_name = <>, dis_id = <> WHERE used = 0 ORDER BY id ASC LIMIT 1""".format(AUTHOR, ID) cur.execute(sql)
Для того, чтобы обновить только первую запись, необходимо использовать команду LIMIT с значением 1 вместе ORDER BY (для сортировки по ключевому полю). В примере использована колонка id (как правило, так обозначают в таблицах primary key поля). Если у вас нет такого поля, можете заменить на существующее
UPDATE:
Если вы используете sqlite, скомпилированную без объявления опции
#define SQLITE_ENABLE_UPDATE_DELETE_LIMIT
То предыдущий код работать не будет, но вы можете реализовать аналог с помощью подзапроса:
def insertUser(ID, AUTHOR): con = lite.connect("something.db") with con: cur = con.cursor() sql = """UPDATE someth SET used = 1, dis_name = <>, dis_id = <> WHERE used = ( SELECT id FROM someth WHERE ORDER BY id ASC LIMIT 1) """.format(AUTHOR, ID) cur.execute(sql)
Либо перекомпировать sqlite согласно инструкции с включенной опцией SQLITE_ENABLE_UPDATE_DELETE_LIMIT
Как вставить переменную python в sql
Чтобы передать переменную в SQL запрос в Python, вы можете использовать параметризованный запрос. Вот пример:
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="mydatabase" ) mycursor = mydb.cursor() sql = "SELECT * FROM customers WHERE address = %s" adr = ("Yellow Garden 2", ) mycursor.execute(sql, adr) myresult = mycursor.fetchall() for x in myresult: print(x)
В этом примере мы передаем переменную adr в SQL запрос. Мы используем %s в запросе как заполнитель для нашей переменной. Затем мы передаем нашу переменную в функцию execute() вместе с запросом.
Это позволяет избежать SQL инъекций и делает ваш код более безопасным.
Для более детального изучения вопроса «SQL инъекции» рекомендуем просмотреть урок Безопасность из курса Python: Веб-разработка (Flask)