我有一個SQL字符串,例如更換字符串的某些部分與Python
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': '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
但是,我希望更好的代碼不使用循環。你怎麼看?
我可以在你的代碼中看到一個潛在的弱點。想想如果'self.alias'這樣說會發生什麼,就像這樣:'{'SELECT':'DROP','*':'TABLE','FROM':'','WHERE':'; - ' }'。 – 2010-09-13 02:45:10