Надеюсь, я могу понять свою проблему. спасибо :)Оператор python SQL с переменными без использования% s
Я использую соединение impala (библиотека: от impala.dbapi import connect).
Для выполнения запроса я использую команду выполнения: cursor.execute(query.value, (year_var, month_var,day_var))
Вообще - это работает просто отлично, и с переменными. проблема возникает, когда я использую оператор SQL LIKE (например, как «% seo» - который содержит% s в нем).
1-ый аргумент (query.value) является строкой:
create table bi_db.search_terms as
select search_query,search_contain,count(*) searches
from (
select search_query,
case when lower(search_query) like '%logo%' then 'logo'
when lower(search_query) like '%google%' then 'google'
when lower(search_query) like '%facebook%' then 'facebook'
when lower(search_query) like '%instagram%' then 'instagram'
when lower(search_query) like '%etsy%' then 'etsy'
when lower(search_query) like '%seo%' then 'seo'
when lower(search_query) like '%social media%' then 'social media'
else 'else' end as search_contain
from traffic_db.traffic_parq a
where year = %s AND month = %s AND day = %s AND controller = 'search' and action in ('gigs','users')
and search_query is not null and search_query<>'') t
group by search_query,search_contain
второй аргумент cursor.execute (например, (year_var, month_var, day_var)) относятся к% с я ставлю на запрос, который я запускаю, чтобы использовать динамические переменные.
** Проблема заключается в том, что питон думает, что имеет 5 аргументов вместо 3. Только что вызвано тем, что у меня есть %seo
и %social
в LIKE statments **
Кто-нибудь сталкивался с такой проблемой? знаете, как его решить?
Большое спасибо!
Возможно использовать '%%' 'буквального% '. –