【发布时间】:2010-09-13 02:38:26
【问题描述】:
我有一个 SQL 字符串,例如
SELECT * FROM benchmark WHERE xversion = 1.0
实际上,xversion 是别名变量,self.alias 包含所有别名信息,例如
{'CompilationParameters_Family': 'chip_name', 'xversion':'CompilationParameters_XilinxVersion','opt_param': …… 'chip_name': 'CompilationParameters_Family', 'CompilationParameters_Device':'设备'}使用这个别名,我应该把字符串改成如下。
SELECT * FROM benchmark WHERE CompilationParameters_XilinxVersion = 1.0
对于这个改变,我想出了以下内容。
def processAliasString(self, sqlString):
components = sqlString.split(' ')
resList = []
for comp in components:
if comp in self.alias:
resList.append(self.alias[comp])
else:
resList.append(comp)
resString = " ".join(resList)
return resString
但是,我希望更好的代码不使用 for 循环。你怎么看?
【问题讨论】:
-
我可以看到您的代码中的一个潜在弱点。想想如果
self.alias像这样说会发生什么:{'SELECT': 'DROP', '*': 'TABLE', 'FROM': '', 'WHERE': ';--' }。