当我运行以下命令时:
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将不会执行。有什么想法吗?
发布于 2018-06-08 05:26:43
使用双语音标记而不是单语音标记:
"SELECT COUNT(*) FROM X WHERE TABLE_NM = '{}'".format(table)
这并不完全相关(与其说是必须的,不如说是精确的),但如果您使用的是Python3.6,也可以使用f-strings (但您仍然需要双语音标记)。
发布于 2018-06-08 05:26:49
如果你使用的是Python 3.6,f字符串是一个f-un解决方案。最后,您需要使用双引号将单引号括起来。
table = f'{cfg_pre}_{cfg_tbl}'
check_data = f"SELECT COUNT(*) FROM X WHERE TABLE_NM = '{table}'"
发布于 2018-06-08 05:28:42
虽然SQL注入是使用变量创建查询时可能遇到的问题,但解决方案是转义字符或更改引号。
table = cfg_pre + '_' + cfg_tbl
check_data = "SELECT COUNT(*) FROM X WHERE TABLE_NM = '{}'".format(table)
或
table = cfg_pre + '_' + cfg_tbl
check_data = 'SELECT COUNT(*) FROM X WHERE TABLE_NM = \'{}\''.format(table)
https://stackoverflow.com/questions/50750368
复制相似问题