如何将字符串变量插入这个长的Python SQL字符串中?

0 投票
1 回答
3186 浏览
提问于 2025-04-18 17:07

我有一个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注入攻击的风险。

撰写回答