You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于DataFrame字段值替换SQL模板变量生成新列

如何用DataFrame字段批量生成SQL更新语句

需求说明

基于包含name、zip_code、new_zip_code、id字段的DataFrame,批量生成SQL更新语句并存储为新列query:

  • SQL模板中SET zip_code =后的数值替换为DataFrame的new_zip_code字段值
  • WHERE id =后的内容替换为DataFrame的id字段值(需保留单引号)
  • AND zip_code =后的数值替换为DataFrame的zip_code字段原值

实现代码

使用Pandas的apply函数结合字符串格式化,遍历每一行生成对应SQL语句:

import pandas as pd

# 示例DataFrame
data = {
    'name': ['Jeffrey', 'Palmas'],
    'zip_code': [85698, 89723],
    'new_zip_code': [75813, 36712],
    'id': ['o5FOLOdM1UtOXDB5_WDbWA', '9567LEKDKLD95DDF_67_DD']
}
df = pd.DataFrame(data)

# 生成query列
df['query'] = df.apply(
    lambda row: f"UPDATE `hospitals` SET zip_code = {row['new_zip_code']} WHERE id = '{row['id']}' AND zip_code = {row['zip_code']}",
    axis=1
)

执行结果

生成的DataFrame如下:

namezip_codenew_zip_codeidquery
Jeffrey8569875813o5FOLOdM1UtOXDB5_WDbWAUPDATE hospitals SET zip_code = 75813 WHERE id = 'o5FOLOdM1UtOXDB5_WDbWA' AND zip_code = 85698
Palmas89723367129567LEKDKLD95DDF_67_DDUPDATE hospitals SET zip_code = 36712 WHERE id = '9567LEKDKLD95DDF_67_DD' AND zip_code = 89723

注意事项

如果id字段包含单引号等特殊字符,需要转义以避免SQL语法错误,可修改代码如下:

df['query'] = df.apply(
    lambda row: f"UPDATE `hospitals` SET zip_code = {row['new_zip_code']} WHERE id = '{row['id'].replace(\"'\", \"''\")}' AND zip_code = {row['zip_code']}",
    axis=1
)

内容的提问来源于stack exchange,提问作者coding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:15:48