Производство Psycopg2 уместно mogrify?
Я хочу сделать именно то, что cursor.mogrify
делает, но в производстве соответствующим образом.
Я обновляю некоторый устаревший код Python, который строит запросы путем объединения строк. Мне нужно изменить это, чтобы безопасно сбежать.
Запросы являются длинными и построены на другом сервере, чем они выполняются, поэтому обычный процесс использования cursor.execute
бежать - непривлекательно с точки зрения ясности кода и практической жизнеспособности.
Я бы использовал mogrify, но я понимаю, что он предназначен только для целей отладки.
Я оглянулся и не могу найти хороший ответ на это. Что ты предлагаешь?
1 ответ
Не используйте tuple
, Использовать dictionary
d = {'p1': val1, 'p2': val2}
cur.execute("""
select *
from t
where col1 = %(p1)s and col2 = %(p2)s
""", d
)
Если есть необязательные параметры, передайте тогда как нуль
d = {'p1': None, 'p2': val2}
cur.execute("""
select *
from t
where
(%(p1)s is null or col1 = %(p1)s)
and
(%(p2)s is null or col2 = %(p2)s)
""", d
)
Установить ssh
подключение к серверу и подключение через него.
ssh -L 5432:localhost:5432 remotehost.com