У меня есть сложный sql-запрос, который мне нужно выполнить на Django и Raw SQL, кажется единственным вариантом. Мои параметры являются строками и могут быть пустыми. Причиной быть пустым является то, что у меня есть условные операторы выше, и в зависимости от того, что должен быть выполнен правильный sql. Но когда ra sql запускается, django фактически ставит кавычки (которые я использую для обозначения строк) в sql, и поэтому он выдает ошибку.Правильный способ передачи параметров, содержащих строку, в Django Raw sql
Я упростил запрос, чтобы показать проблему, с которой я столкнулся. Следующий запрос при выполнении вызывает ошибку.
select_cond = ''
where_cond = 'id = 109'
qraw = Book.objects.raw(
"\
SELECT id %s\
FROM book\
WHERE %s\
",
[select_cond, where_cond]
)
Ошибка связана с тем, что она переводится следующим образом. Кавычки действительно попадают в sql и поэтому не выполняются. Любая идея о том, как я могу это исправить?
SELECT id ''
FROM book
WHERE 'id = 109'
ORDER BY id DESC;
Я предполагаю, что это не безопасно 3 раза недостаточно, чтобы избежать опускания. – alecxe