Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.147.89.85] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте.
Спрашиваю у многих - никто не может ничего сказать. А проблема вот в чем. Пишу SQL запрос, в котором используется подставнока с %, но эту подстановку надо передать в MySQL. Но в этом же запросе есть подстановка для метода execute: sql = "SELECT disp.status.NAME, FROM_UNIXTIME(disp.data.DATE,'%d.%m.%Y') AS DATE,disp.data.DO_PERCENT, disp.data.INFO FROM disp.data INNER JOIN disp.status ON disp.status.ID=disp.data.STATUS_ID ORDER BY disp.data.DATE DESC WHERE disp.NAME LIKE %s" #Далее прикладываю запрос пользователя и выполняю весь SQL: cursor.execute(sql, ("%" + like_query + "%",)) Как заэкранировать проценты в FROM_UNIXTIME и оставить %s? Пробовал удваивать - %%, но в FROM_UNIXTIME они проходят вместе в MySQL и возникает ошибка. Понятно, что можно совмещать строки не в cursor.execute(), а в обычной строке - но хотелось бы правильно писать, да и от встраивания кода тоже защита не помешала бы... |
Сообщ.
#2
,
|
|
|
А как ты из Питона доступ к MySQL получаешь? Штатная библиотека обеспечивает только работу с базами sqlite.
И в штатной библиотеке для передачи параметров в sql-запрос используется не %s, а знак вопроса. |
Сообщ.
#3
,
|
|
|
Я использую pymysql:
import pymysql # ... def initDb(host_addr, uname, psw, dbase): connection = pymysql.connect(host_addr, uname, psw, dbase, charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor, autocommit=True) return connection # ... # как пример def isAdmin(connection, tel_uid): sql = "SELECT `user_admingroup` FROM `tb_users` WHERE `tb_user_id`=%s" cursor = connection.cursor() try: cursor.execute(sql, (tel_uid)) row = cursor.fetchone() if row: return row["user_admingroup"] else: return False except pymysql.DatabaseError as e: logger.error("Database error: ", e) |
Сообщ.
#4
,
|
|
|
А pymysql что, знак вопроса для обозначения места вставки параметра не понимает? Это же вроде стандартный способ в SQL-запросах.
|