SQL-случай, когда X LIKE ‘%T%’ в скрипте Python приводит к «TypeError: dict не является последовательностью»

#python #sql

#python #sql

Вопрос:

Я пытаюсь выполнить SQL-запрос к базе данных Redshift в скрипте Python. Следующее приводит к ошибке «TypeError: dict не является последовательностью», и я не могу понять, почему.

 test1 = """

WITH A AS
(
SELECT *,
CASE WHEN substring(text_value, 0, 4) LIKE ' ' THEN substring(substring(text_value, 0, 4), 3) ELSE substring(text_value, 0, 4) END AS cost_center_id
FROM job_custom_fields
WHERE key = 'cost_center'
)

SELECT job_id,
display_value,
           CASE WHEN cost_center_id LIKE '%T%' THEN SUBSTRING(cost_center_id, 1,1)
                WHEN cost_center_id LIKE '%D%' THEN SUBSTRING(cost_center_id, 1,1)
                WHEN cost_center_id LIKE '%P%' THEN SUBSTRING(cost_center_id, 1,1) ELSE cost_center_id END AS cost_center_id
FROM A
"""

red_engine = create_engine('postgresql psycopg2://org_525:LZynsTS56PqPlHVhIIgUdDf1c1wuW4gD@redshift.greenhouse.io:5439/greenhouse')
test = pd.read_sql_query(test1,red_engine)
test
  

Любая помощь очень ценится

Ответ №1:

вам нужно экранировать его, используя %% in python string for % для ваших подобных операторов в sql.

% используется для форматирования строк в python.