Python sqlalchemy запрос с кавычками между - PullRequest
0 голосов
/ 06 мая 2018

Я пытаюсь использовать python для запроса базы данных oracle с помощью SQLAlchemy. Я могу получить данные с помощью обычного запроса, но он всегда возвращает пустой DataFrame, когда предложение where содержит знаки кавычек, например, условие ниже: A in ('a','b','c','d').

engine = create_engine(...)
query = '''select * from table where ( A in (:A_Value) and BIN (:B_Value))'''
df= pd.read_sql_query(query , con=engine, params = {"A_Value": A_value, "B_Value" : B_value})

A_value - значение кадра данных. Я попытался сформировать строку через запятую с кавычкой A_value = " 'a', 'b', 'c', 'd' "

Мне интересно, где сделано неправильно?

1 Ответ

0 голосов
/ 06 мая 2018

Параметры интерпретируются как одно значение, и ни одна строка не соответствует IN ("'a', 'b', ...").

Что вам нужно сделать, так это создать IN -класс с соответствующим количеством маркеров замены и затем передать это количество параметров. Например, "IN (" + ','.join(['?']*len(A_Value)) + ")", который дает вам "IN (?, ?, ?)", если A_Value имеет три значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...