我有一个存储在python字符串中的MySQL查询。它看起来像这样;
query = """ SELECT colA, colB
FROM table WHERE colC = '1' """
假设我想插入字符串变量来构造相同的query
。
我可以做类似的事吗?
Var1 = 'colA'
Var2 = 'colB'
query = """ SELECT %s, %s
FROM table WHERE colC = '1' """, Var1, Var2
我怎么能在python中这样做?我使用的是Python 2.7
答案 0 :(得分:1)
您不能将列名用作SQL参数;你必须手动插入名称;您可以使用str.format()
string formatting:
query = """ SELECT `{}`, colB
FROM table WHERE colC = '1' """.format(Var1)
`
占位符周围的{}
反引号用于确保您的列标识符被解释为,即使它包含空格或其他关键字的名称。
多列占用多个占位符:
query = """ SELECT `{}`, `{}`
FROM table WHERE colC = '1' """.format(Var1, Var2)
执行此操作时要非常小心并始终预先验证Var1
是否为有效的列名。不要盲目接受用户输入,否则你将无法免受SQL注入攻击。