【发布时间】:2018-11-17 21:48:05
【问题描述】:
当我运行以下命令时:
table = cfg_pre + '_' + cfg_tbl
check_data = 'SELECT COUNT(*) FROM X WHERE TABLE_NM = {}'.format(table)
我得到以下信息:
SELECT COUNT(*) FROM X WHERE TABLE_NM = ABC_123
我需要的是:
SELECT COUNT(*) FROM X WHERE TABLE_NM = 'ABC_123'
否则 SQL 将不会执行。有什么想法吗?
【问题讨论】:
-
您不应该使用字符串格式来创建 SQL 查询。让您容易受到 SQL 注入的攻击。
-
谢谢...您对此有更好的建议吗?
-
让您选择的 DB 驱动程序准备您的语句,但通常:
"whatever '{}' else".format("foo bar")将导致whatever 'foo bar' else。 -
我假设您想要执行这些 SQL 语句。如果您真的只想在该值周围生成一个带有单引号的字符串,请告诉我,我会重新打开。或者找一个更合适的骗子。