首页 > 解决方案 > Python:在文本中使用格式时整数未转换为字符串

问题描述

我有一个字符串,其中存在两个占位符以容纳动态值。其中一个接受整数,另一个接受字符串。

s_1 = int(sys.argv[1])
s_2 = str(sys.argv[2])
sql = "SELECT * FROM script.fn_function({0},{1});".format(s_1,str(s_2))

当我将值传递为 100、200 时,理想情况下我的s_1字符串应该如下所示:s_2sql

sql = 'SELECT * FROM script.fn_function(100,'200')'

但是当我运行上述内容时,我得到了

sql = 'SELECT * FROM script.fn_function(100,200);' 

所以换句话说,.format(s_1,str(s_2))并不完全有效。

我在这里缺少什么?从来没有遇到过这样的问题。

标签: python

解决方案


当您注入字符串时,.format它不会''为您添加。最好是写

sql = "SELECT * FROM script.fn_function({0},'{1}');".format(s_1, s_2)

编辑:我从格式中删除了 str ,因为正如指出的那样它是多余的。

也正如其他人建议的那样,使用参数化查询来提高安全性


推荐阅读