gpt4 book ai didi

python - Pandas 中的 SQL 注入(inject);绑定(bind)列表到 SQLAlchemy 中的参数

转载 作者:太空宇宙 更新时间:2023-11-03 15:11:23 27 4
gpt4 key购买 nike

我有这个 SQL 查询:

sql = "select * from table where date in {dl}"

其中 dl 是一个日期元组。我可以通过执行 string.format(dl=...) 然后在 pandas 中使用 read_sql_query 来进行查询,但我读到这可能导致 SQL 注入(inject),所以是不安全。

但是,在 SQLAlchemy 中似乎没有好的选择。您似乎无法使用 text() 将列表传递给参数,并且首先将列表转换为字符串会导致错误。我看到您可以遍历列表并一一传递参数,但为什么有人要这样做?

清理变量(删除引号、分号等)是否有助于降低 SQL 注入(inject)的风险?无法使用原始 SQL 字符串听起来很糟糕。

最佳答案

您可以使用 .bindparams()将参数绑定(bind)到 text() 构造中的值:

sql = text("select * from table where date in :dl").bindparams(dl=...)

请注意,您传递给 dl 的值必须是元组才能正确呈现。

关于python - Pandas 中的 SQL 注入(inject);绑定(bind)列表到 SQLAlchemy 中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26184248/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com