Python 如何使用字符串格式获取%
我想在运行时在Python2.6中创建一个SQL语句,如下所示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
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使用字符串格式,正如下面和其他答案所说的那样=)