python - Python 如何在没有 %s 的情况下进行字符串替换?

标签 python sql string

检查我发现的以下 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)攻击.

关于python - Python 如何在没有 %s 的情况下进行字符串替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11802001/

相关文章:

python - 使用 interp1d 在数据帧中按行插值

python - 当 Python 中不再显示唯一 ID 时标记大型数据集

sql - 如何使用 ADODB 在一次执行中返回多个记录集?

ios - 刷卡中的数组获取第一个元素

string - 如何从字符串中的给定日期找到工作日?

Python - 连接多个子文件夹中的文本文件

python - 如何在 PyCharm 项目 View 中移动项目文件夹?

python - 空闲python Mac上的ffmpeg

sql - 将嵌套查询转换为联接

php - 使用两个外键将两个表连接在一起