Отформатируйте SQL-запрос в Python, не выполняя его - PullRequest
1 голос
/ 28 сентября 2011

В Python есть все виды библиотек для взаимодействия с базами данных, которые обеспечивают хороший способ создавать запросы SQL, не беспокоясь о SQL-инъекциях.Например, с sqlite3:

for t in [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
          ('2006-04-05', 'BUY', 'MSOFT', 1000, 72.00),
          ('2006-04-06', 'SELL', 'IBM', 500, 53.00),
         ]:
    c.execute('insert into stocks values (?,?,?,?,?)', t)

Проблема в том, что я не хочу выполнять запрос, я просто хочу отформатировать его и получить запрос в виде строки.Я думаю, я мог бы избежать вещей сам, но это не очень элегантное решение.Должен быть способ получения отформатированных запросов без фактического подключения к базе данных и их запуска.

(В этом контексте я пишу фильтр, который подготавливает серию операторов SQL из входных данных, ноЯ не хочу запускать их в определенной базе данных, просто сохраните их на потом.)

1 Ответ

5 голосов
/ 28 сентября 2011

Должен быть способ получить отформатированные запросы без фактического подключения к базе данных и их запуска

Не совсем.

СУБД обрабатывает это внутренне с помощью «подготовленных запросов» и «переменных связывания». «Отформатированный» на самом деле не существует. Anywhere.

...