如何将字符串变量插入这个长python SQL字符串?

时间:2014-08-13 10:57:25

标签: python mysql string

我有一个存储在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

1 个答案:

答案 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注入攻击。