Я новичок в Python и psycopg2... I'am пытается сделать запрос, который использует IN
SQL заявления и другие WHERE
положения, но я получаю сообщение об ошибке, как это:
psycopg2.ProgrammingError: argument formats can't be mixed
Из того, что я понимаю, я смешиваю кортеж Python со строками, вот SELECT
:
cur2.execute("SELECT hash FROM jobsads_text\
WHERE\
date_inserted::timestamp::date - now()::timestamp::date <= 0\
AND date_inserted::timestamp::date - now()::timestamp::date >= -7\
AND hash NOT IN %s \
AND lower((%s)) LIKE '%(%s)%'\
ORDER BY date_inserted asc;", ((not_in_sql,), search_field, search_string))
Я получаю ошибку в запросе выше.
Этот запрос ниже:
cur2.execute("SELECT hash FROM jobsads_text\
WHERE\
date_inserted::timestamp::date - now()::timestamp::date <= 0\
AND date_inserted::timestamp::date - now()::timestamp::date >= -7\
AND hash NOT IN %s \
ORDER BY date_inserted asc;", (not_in_sql,))
Мой вопрос... Как я могу not_in_sql
кортеж not_in_sql
со строками search_field
и search_string
?
Любые подсказки?
С наилучшими пожеланиями,
t = (1, 3)
search_field = 'c'
search_string = '%something%'
print cursor.mogrify("""\
select *
from p
where
c in %%s
and
lower (%s) like %%s
""" % search_field, (t, search_string))
Выведет это:
select *
from p
where
c in (1, 3)
and
lower (c) like '%something%'
psycopg2 не будет заменять идентификаторы, такие как имена столбцов, поэтому вы должны подставить их перед передачей запроса в качестве первого аргумента метода.