Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将字符串变量插入到这个长python SQL字符串中?_Python_Mysql_String - Fatal编程技术网

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

如何将字符串变量插入到这个长python SQL字符串中?,python,mysql,string,Python,Mysql,String,我有一个存储在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,

我有一个存储在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参数;您必须手动插入名称;您可以为此使用:

query = """ SELECT `{}`, colB
            FROM table WHERE colC = '1' """.format(Var1)
`
占位符周围的
{}
反勾用于确保列标识符被解释为这样,即使它包含空格或是关键字名称

多列使用多个占位符:

query = """ SELECT `{}`, `{}`
            FROM table WHERE colC = '1' """.format(Var1, Var2)

执行此操作时要格外小心,并始终预先验证
Var1
是否为有效的列名。不要盲目接受用户输入,否则您将无法免受SQL注入攻击。

有人能解释为什么投反对票吗?我相信这是一个常见的问题。如果我有两个变量-
Var1
Var2
,该怎么办。说
Var2=colB
。代码是什么样子的?我已经相应地编辑了我的问题。@user3293156:使用多个
{}
占位符,并将多个参数传递给
str.format()
方法:
“从…”中选择“{}”,“从…”。format(Var1,Var2)
。谢谢。你帮了大忙。