SQLAlchemy的可选参数

2024-04-26 12:04:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个原始SQL要在SQLAlchemy中执行,可选参数来自查询字符串。在

我做了一个函数,把句子构建成where子句:

def queryParams(self, params):
    params = urllib.parse.parse_qs(params)
    query = ""
    for (key, val) in params.items():
        for value in val:
            if(re.match("/(\d+(\.\d+)?)/", value) != False or (value == "false" or value == "true")):
                query += ' AND ' + key + ' = ' + value
            else:
                query += ' AND ' + key + ' = ' + "'" + value + "'"

    return query

当我需要一个SQL注入的时候,我不需要执行一个SQL的问题。在

^{pr2}$

如何使用准备好的语句使用可选参数?在

感谢前进!在


Tags: orandkey函数字符串inforsql
1条回答
网友
1楼 · 发布于 2024-04-26 12:04:47

下面是一个简化的示例,说明您可以做什么:

In [42]: def queryParams(params):
    ...:     params = urllib.parse.parse_qs(params)
    ...:     for key, val in params.items():
    ...:         # Trust the implicit conversions:
    ...:         # https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/Data-Type-Comparison-Rules.html#GUID-6DB331B5-0F34-4215-9A20-16AEA9D7FF4B
    ...:         yield column(key) == val
    ...: 

使用^{}处理引用保留字和混合大小写的操作,以及转义列名中的坏字符,但是您仍然应该可能使用白名单。比较生成一个二进制SQL表达式对象,其绑定参数为val。您可以组合Core constructs with text fragments以生成查询:

^{pr2}$

相关问题 更多 >