Python 如何从字典值字符串中动态删除引号

Python 如何从字典值字符串中动态删除引号,python,python-3.x,dictionary,exasol,Python,Python 3.x,Dictionary,Exasol,我有一个类似的字典:d={'table':'db_schema.foo','column':'bar'}。我想在删除所有值的引号后传递此词典。所以我想动态地获取{'table':db_schema.foo,'column':bar} 详情: 我正在尝试在连接后将运行动态查询传递到exasol。我在这里使用pyexasol并尝试。我正在尝试执行简单的查询,如: 选择* 来自db_schema.foo 其中bar>=0 如果我提供dictionaryd,那么执行的查询是: 选择* 来自“db_sc

我有一个类似的字典:
d={'table':'db_schema.foo','column':'bar'}
。我想在删除所有值的引号后传递此词典。所以我想动态地获取
{'table':db_schema.foo,'column':bar}

详情:

我正在尝试在连接后将运行动态查询传递到exasol。我在这里使用pyexasol并尝试。我正在尝试执行简单的查询,如:

选择*
来自db_schema.foo
其中bar>=0
如果我提供dictionary
d
,那么执行的查询是:

选择*
来自“db_schema.foo”
其中'bar'>=0
并导致错误。所以我想从所有值中删除引号。我尝试了
{k:v.strip(\')来表示k,v在d.items()中
等,但还没有成功

请求的代码:

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
)

正如我在评论中所说,你需要阅读

话虽如此,您需要将代码更改为如下内容:

query=''
挑选*
从{app_table!q}
其中{col!i}>='2020-01-01'
限制10;
'''
查询参数={
'应用程序表':('src','application'),
“col”:“createdat”
}
结果=exasol.runqueryxaparams(
query=query,
查询参数=查询参数
)
如文档所示,上面的代码将导致如下查询:

选择*
来自“src”。“应用程序”
其中createdat>='2020-01-01'
限制10;

我希望这能有所帮助。

引号只是字典表示的一部分,它们实际上不存在于值中。请显示
execute
调用的实际代码。张贴您的代码和收到的完整错误消息。字典上显示的引号正是Python表示字符串的方式。您需要阅读。特别是
!i
,“验证标识符并将其不带引号地放入。它允许您传递小写标识符以查询大写命名表,同时保持其“安全”。它是标识符占位符的“方便”版本。”