检查我发现的以下 Python 2.6 代码行:
key = 'hire_date'
update_dict['key'] = update_dict[key] #added e.g. {..., 'key': '12/31/1999'}
if key == 'hire_date':
query_string = "UPDATE employee SET " + key + "= CAST(%(key)s AS DATE) WHERE emp_id = '" + emp.employee + "'"
我已经测试了这段代码,它有效。它成功地将数据库中员工的 hire_date 字段更新为 'key'
在字典中的值。
当我注意到 %(key)s
以某种方式设法在 'key'
处获取字典的值时,我正在对它进行参数化。它是如何做到的?我一直认为你必须在字符串后添加 % dictionaryOrTupleOrWhatever
才能工作。
在您粘贴的代码中,没有发生插值。但是,稍后可以对变量进行插值:
>>> x = "%(var)s" # no interpolation yet
>>> d = {'var': 88}
>>> x % d # interpolate into the stored string
'88'
鉴于您发布的代码看起来像 SQL,它也可以稍后通过 SQL 库调用进行插值。许多 SQL 接口(interface)库使用 %
符号提供类似的字符串替换,并鼓励用户使用这些而不是内置的字符串替换,因为 SQL 库版本有各种保护措施来防止恶意注入(inject)攻击.
我是一名优秀的程序员,十分优秀!