我有一个存储在 python 字符串中的 MySQL 查询。看起来像这样;
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
最佳答案
不能使用列名作为 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 注入(inject)攻击。
关于python - 如何将字符串变量插入到这个长Python SQL字符串中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25284339/