如何在Python中使用嵌套的参数化查询?

时间:2019-09-06 01:00:37

标签: python sql nested parameterized-query snowflake-data-warehouse

我正在尝试使用如下所示的嵌套参数化查询:


def generate_params():
    ...
    params = {
        'sub_query': get_sub_query(),
        'sub_query_param1': 1,
        'sub_query_param2': 2,
        'sub_query_param3': 3
    }
    return params

def generate_and_execute_query(params):
    sql = """
        SELECT * FROM %(sub_query)s
        FILE_FORMAT = (type = %(file_format)s, %(format_options)s)
        HEADER = FALSE
        %(export_options)s
        """
    params.update({
        'file_format': 'txt',
        'file_options': 'None',
        'export_options': 'None'
    })
    execute(sql, params)

execute(generate_params())

因此,由于sub_query_param1sub_query_param2sub_query_param3未填写子查询,因此此代码无法正常工作。 我还考虑过使用格式字符串或参数化语句为sub_query预填充参数,但是格式字符串具有SQL注入漏洞,而参数化语句导致我多次使用sub_query_param1sub_query_param2时代码变脏。

有人可以给我任何建议吗? 预先谢谢你!

0 个答案:

没有答案