Python中使用Format()进行动态字符串替换

2024-09-27 22:37:37 发布

您现在位置:Python中文网/ 问答频道 /正文

当参数可以变化时,有没有一种方法可以用string.format()动态格式化字符串?我想写一个函数,其中的输入是一个SQL字符串和一个名-值对的字典;两个输入可以不同。在

例如,SQL字符串可能是

"select * from students where school={schoolArg} and age={ageArg}"

字典是{schoolArg: "some school", ageArg: 10}

另一个SQL字符串可能是

^{pr2}$

字典是{classArg: "history"}

……等等。在

我可以毫无问题地使用string.replace()。但是,是否可以使用string.format(),在这里参数是事先不知道的?在


Tags: 方法函数字符串fromformatsql参数string
1条回答
网友
1楼 · 发布于 2024-09-27 22:37:37

注意,您正在使用的任何数据库包都已经包含了这个的功能,与使用基本字符串格式相比,这将更加健壮(例如适当地引用/转义(相当糟糕)和SQL注入(very bad))。在

参见例如How to use variables in SQL statement in Python?

不要自己动手,使用数据库API。在


话虽如此,你几乎已经做到了:

>>> "select * from students where school={schoolArg} and age={ageArg}".format(**{"schoolArg": "some school", "ageArg": 10})
'select * from students where school=some school and age=10'
>>> "select * from teachers where class={classArg}".format(**{"classArg": "history"})
'select * from teachers where class=history'

(如果语法不熟悉,请参阅What does ** (double star) and * (star) do for parameters?

请注意,为了强调上述要点,您没有正确引用模板字符串,因此输出不是有效的SQL查询。在

相关问题 更多 >

    热门问题