当我运行以下内容时:
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不会执行。有什么想法吗?
答案 0 :(得分:3)
使用双重语音标记代替单个语音标记:
"SELECT COUNT(*) FROM X WHERE TABLE_NM = '{}'".format(table)
这并不完全相关(更多的是精确而非必要),但如果你使用的是Python3.6,你还可以使用f-strings(但你仍需要双重语音标记)。
答案 1 :(得分:1)
如果您使用的是Python 3.6,则f-strings是一种f-un解决方案。最终,您需要使用双引号括起单引号。
table = f'{cfg_pre}_{cfg_tbl}'
check_data = f"SELECT COUNT(*) FROM X WHERE TABLE_NM = '{table}'"
答案 2 :(得分:1)
虽然如果使用变量创建查询,但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)