如何将字符串变量插入这个长的Python SQL字符串中?
我有一个MySQL查询,它被存储在一个Python字符串里。它看起来是这样的:
query = """ SELECT colA, colB
FROM table WHERE colC = '1' """
假设我想插入一个字符串变量来构建相同的查询
。
我可以像这样做吗?
Var1 = 'colA'
Var2 = 'colB'
query = """ SELECT %s, %s
FROM table WHERE colC = '1' """, Var1, Var2
我该如何在Python中做到这一点?我正在使用Python 2.7。
1 个回答
1
你不能直接把列名当作SQL参数来用;你需要手动把列名插入到SQL语句中。你可以使用str.format()
字符串格式化来做到这一点:
query = """ SELECT `{}`, colB
FROM table WHERE colC = '1' """.format(Var1)
在{}
这个占位符周围加上`
反引号,是为了确保即使你的列名中有空格或者是其他关键字,也能被正确识别为列名。
如果你要用多个列名,就需要用多个占位符:
query = """ SELECT `{}`, `{}`
FROM table WHERE colC = '1' """.format(Var1, Var2)
在做这个的时候一定要非常小心,并且要先确认Var1
是一个有效的列名。不要盲目接受用户输入,否则你会面临SQL注入攻击的风险。