Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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 如何使用字符串格式获取%_Python_String - Fatal编程技术网

Python 如何使用字符串格式获取%

Python 如何使用字符串格式获取%,python,string,Python,String,我想在运行时在Python2.6中创建一个SQL语句,如下所示 SQL = SELECT * FROM table1 where col1 LIKE '%somthing%' 上面的一个在数据库服务器上运行良好,但我在用python创建这个字符串时遇到了问题。我正在使用字符串格式%s添加变量。我的python代码如下所示 var = "somthing" SQL = "SELECT * FROM table1 where col1 LIKE '%%s%'" % var 我得到下面的回溯 T

我想在运行时在Python2.6中创建一个SQL语句,如下所示

SQL = SELECT * FROM table1 where col1 LIKE '%somthing%'
上面的一个在数据库服务器上运行良好,但我在用python创建这个字符串时遇到了问题。我正在使用字符串格式%s添加变量。我的python代码如下所示

var = "somthing"

SQL = "SELECT * FROM table1 where col1 LIKE '%%s%'" % var
我得到下面的回溯

Traceback (most recent call last):
  File "<stdin>", line 8, in <module>
ValueError: unsupported format character ''' (0x27) at index 247
回溯(最近一次呼叫最后一次):
文件“”,第8行,在
ValueError:索引247处的格式字符“”不受支持(0x27)

SQL不使用字符串格式;改用SQL参数

也就是说,您可以通过将其加倍为
%%
来逃避
%

SQL = "SELECT * FROM table1 where col1 LIKE '%%%s%%'" % var

必须作为常规警告。

SQL不使用字符串格式;改用SQL参数

也就是说,您可以通过将其加倍为
%%
来逃避
%

SQL = "SELECT * FROM table1 where col1 LIKE '%%%s%%'" % var

必须作为常规警告。

或者,您可以使用
str.format

SQL = "SELECT * FROM table1 where col1 LIKE '%{}%'".format(var)

或者,您可以使用
str.format

SQL = "SELECT * FROM table1 where col1 LIKE '%{}%'".format(var)

不要这样做-查找SQL注入。除此之外,您还应该真正使用新样式的字符串格式(
str.format()
),而不是旧样式(
%
)。@Bibhas:幸好这是Python。不要这样做-查看SQL注入。除此之外,您还应该真正使用新样式的字符串格式(
str.format()
),而不是旧样式(
%
)。@Bibhas:那么这就是Python了。另外,请注意,虽然这是正确的,但不要这样做-有一些方法可以防止SQL注入,这就是您想要的。这不是。我们需要在
{}
中添加0,比如SQL=“SELECT*FROM table1,其中col1类似于“{0}%”。format(var)或者获取
ValueError:format
@PBLNarasimhaRao中的长度为零的字段名取决于您的Python版本。但无论如何,您都不会对SQL使用字符串格式,因为这个答案和其他答案都说=),另一个注意事项是,虽然这是正确的,但不要这样做-有一些方法可以防止SQL注入,这就是您想要的。这不是。我们需要在
{}
中添加0,比如SQL=“SELECT*FROM table1,其中col1类似于“{0}%”。format(var)或者获取
ValueError:format
@PBLNarasimhaRao中的长度为零的字段名取决于您的Python版本。但无论如何,您都不会对SQL使用字符串格式,正如下面和其他答案所说的那样=)