Строка cursor.execute без выполнения - PullRequest
1 голос
/ 03 мая 2020

Я использую следующий подход к использованию pymysql для параметризации запроса SQL + args, но не для его выполнения (по крайней мере, на законном основании):

try:
    self.cursor.execute(self.sql + ' ***', self.sql_args or tuple())    
except pymysql.err.ProgrammingError:                                      
    self._sql_formatted = self.cursor._last_executed.rstrip('* ')

Есть ли на самом деле метод, который pymysql где он просто форматирует строку SQL, не выполняя ее, или мне нужно использовать что-то подобное выше? Или другой вариант:

self.cursor.execute('DESCRIBE ' + self.sql, self.sql_args or tuple())
self._sql_formatted = self.cursor._last_executed.replace('DESCRIBE ', '')

1 Ответ

1 голос
/ 03 мая 2020

Метод cursor.mogrify

Возвращает точную строку, которая отправляется в базу данных путем вызова метода execute ().

>>> conn = pymysql.connect(host='localhost', user='root', password='password', database='test')
>>> cur = conn.cursor()
>>> stmt1 = """SELECT id, password FROM my_user WHERE name = %s;"""
>>> print(cur.mogrify(stmt1, ('Alice',)))
SELECT id, password FROM my_user WHERE name = 'Alice';
...