python - 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_2
sql
sql = 'SELECT * FROM script.fn_function(100,'200')'
但是当我运行上述内容时,我得到了
sql = 'SELECT * FROM script.fn_function(100,200);'
所以换句话说,.format(s_1,str(s_2))
并不完全有效。
我在这里缺少什么?从来没有遇到过这样的问题。
解决方案
当您注入字符串时,.format
它不会''
为您添加。最好是写
sql = "SELECT * FROM script.fn_function({0},'{1}');".format(s_1, s_2)
编辑:我从格式中删除了 str ,因为正如指出的那样它是多余的。
也正如其他人建议的那样,使用参数化查询来提高安全性
推荐阅读
- ip-address - Hurricane Electric 的 Routed /48 隧道的 ERR_ADDRESS_UNREACHABLE
- dictionary - 从(位置,范围)元组创建分组字典
- actionscript-3 - 为什么 object.name 中的这些更改会导致不同的显示?
- apache-spark - 读取镶木地板文件时,有没有办法在 basePath 中使用通配符?
- tableau-api - tableau 中表格操作的复杂示例
- java - 与 Jsch 库的连接超时
- java - CipherOutputStream 不工作。没有任何内容写入 OutputStream
- microsoft-graph-api - 图 REST API 身份验证
- reactjs - 在 Azure 上无服务器部署静态反应应用程序的正确方法是什么?
- install4j - install4j:是否有可能对所有媒体都有完整的更新体验?