在 SQLAlchemy 中手动构建 SQL 查询时如何正确转义字符串?

新手上路,请多包涵

我正在使用 SQLAlchemy 连接到 Python 中的不同数据库,但没有使用 ORM 支持,因为由于多种原因无法实现。

主要是我使用类似的东西构建了一个复杂的 SQL 查询

sql += "AND fieldname = '%s'" % myvar

在我的例子中,这不是 SQL 注入的问题,因为数据始终来自受信任的来源,但即使来源受信任,它也可能包含可能破坏查询的字符,例如 ' , %_

主要是,我需要对它们进行转义,我想知道是否已经存在可以重复使用的转义函数。

原文由 sorin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 848
1 个回答

你不应该尝试实现你自己的转义,而应该使用 SQLAlchemy 的内置方法:

 sql = 'select * from foo where fieldname = :name'
result = connection.execute(sql, name = myvar)

原文由 BrtH 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题