У меня есть словарь вроде: d = {'table': 'db_schema.foo', 'column': 'bar'}
. Я хочу передать этот словарь после удаления кавычек из всех значений. Поэтому я хочу получить {'table': db_schema.foo, 'column': bar}
динамически.
Подробности:
Я пытаюсь передать динамический запрос c в exasol после подключения. Я использую Pyexasol здесь и пытаюсь execute()
. Я пытаюсь выполнить простой запрос, например:
SELECT *
FROM db_schema.foo
WHERE bar >= 0
Если я предоставлю словарь d
, то получаемый запрос будет:
SELECT *
FROM 'db_schema.foo'
WHERE 'bar' >= 0
и приведет к ошибке. Поэтому я хочу удалить цитату из всех значений. Я пытался {k:v.strip("\'") for k, v in d.items()}
et c. но пока не удалось.
Запрошенный код:
foo_query = '''select *
from {app_table}
where {col} >= '2020-01-01'
limit 10;'''
foo_param={'app_table': 'src.application',
'col': 'createdat'}
foo_results = exasol.runQueryExaParams(query=foo_query, query_param=foo_param)
foo_results1 = exasol.runQueryExaParams(query=foo_query, query_param={k:v.strip("\'") for k, v in foo_param.items()})
, где exasol - это класс, построенный на pyexasol с только параметрами соединения. Соответствующий метод из класса:
def runQueryExaParams(self, query, query_param):
self.conn = pyexasol.connect(
dsn=self.__dsn, user=self.__user, password=self.__password, encryption=True)
res = self.conn.export_to_pandas(query, query_param)
self.conn.close()
res.columns = res.columns.str.lower()
return res
В обоих случаях я получаю одну и ту же ошибку:
pyexasol.exceptions.ExaQueryError:
(
message => syntax error, unexpected simple_string_literal [line 3, column 22] (Session: )
dsn =>
user =>
schema =>
code => 42000
session_id =>
query => EXPORT (
select *
from 'src.application'
where 'createdat' >= '2020-01-01'
limit 10
) INTO CSV
AT 'https://1.2.3.4' FILE '000.csv'
WITH COLUMN NAMES
)