IndexError: Кортеж выходит за пределы диапазона при передаче переменной в функцию python для функции SQL - PullRequest
0 голосов
/ 18 октября 2018

У меня есть SQL, который имеет 2 подзапроса, как показано ниже.Когда я запускаю его в редакторе SQL, он работает нормально, однако, если я использую его как функцию Python, я получаю сообщение об ошибке

IndexError: tuple index out of range

Может кто-нибудь посоветовать, где я ошибаюсь.

dwh_cursor.execute(sql.SQL("""
with base as 
(select a.id,a.store, b.prod_id 
from sales a join product b on a.prod_id = b.id), 
sub_query as
(select a.cust_name,b.id, b.prod_id 
from customers a join product b on a.prod_id = b.id)     
select base.store,base.prod_id,sub_query.cust_name 
from base join sub_query on base.id = sub_query.id 
and sub_query.cust_name = {}""").format(sql.Literal(name)))

Я использую Redshift DB.Спасибо

1 Ответ

0 голосов
/ 18 октября 2018

Вы создаете две таблицы перед тем, как запросить их вместе в последнем запросе.

Однако во втором запросе вы присоединяетесь к таблице b таблицы a без использования «on».Вместо этого вы используете «где».Попробуйте запросить вторую таблицу с помощью соединения следующим образом:

from customers a join product b on a.prod_id = b.id

вместо:

from customers a join product b where a.prod_id = b.id    
...