我使用Python string.format()方法构建了一个很长的mysql查询。但是,当我尝试使用超过10个字段({0}到{10})时,我得到一个超出范围错误的元组。当我只使用10个字段({0}到{9})时,没有问题。
我真的只需要知道.format()可以处理多少字段,如果可能的话,如何处理#9字段。谢谢!
答案 0 :(得分:2)
您可以使用的占位符数量实际上没有限制;如果您收到索引错误,则错误计划您要格式化的元素数量。{10}
否则可以正常工作:
>>> '{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10}'.format(*range(11))
'0 1 2 3 4 5 6 7 8 9 10'
考虑到因为计数从零开始,那里有 11个元素。
但是,您不应该使用str.format()
来生成SQL查询。请改用SQL参数,以确保正确引用(防止SQL注入安全漏洞),并允许数据库重用查询的查询计划。
答案 1 :(得分:1)
您可以将多少内容放入字符串中。您的逻辑出错:
当我尝试使用超过10个字段({0}到{10})时,我得到一个超出范围错误的元组。
那是因为你有11件事需要补充,当你只提供10件时。元组从0开始,所以十件物品元组只会......
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 # Count! That's 10 items!
这就是为什么当你{0} to {9}
时,你没有收到错误。