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

如何通过Python更新SQL查询中的@pdate参数?

可以通过Python更新SQL查询中的参数

完全可以实现无需修改SQL文件,直接通过Python传入参数的需求,推荐使用参数绑定的方式(安全且避免SQL注入风险),具体步骤如下:

1. 调整SQL查询文件

将原SQL中声明并赋值@pdate的两行代码删除,保留@pdate作为参数占位符即可,修改后的SQL内容如下:

set nocount on;

select
  cast(L.Date as datetime) as Date
, Amount
, AccountNumber
, Property
, County
, ZipCode
, Price
, Owner

from Account.Detail L

inner join Owner.Detail M
    on L.Date = M.Date
    and L.Number = M.Number

inner join Purchase.Detail P
    on L.Date = P.Date
    and L.Purchase.Number = P.Purchase.Number

where L.Date = @pdate
    and Purchase.Number not in ('CL1', 'CL2')
    and Amount > 0

2. 修改Python代码传递参数

利用pandas.read_sql的params参数(或pyodbc的参数绑定机制)传入@pdate的值,修改后的Python代码如下:

import pyodbc
import pandas as pd  # 补充导入pandas,原代码缺失

server = 'my_server_name'
database = 'my_database_name'

connection = pyodbc.connect(Trusted_Connection="yes", DRIVER="{SQL Server}", SERVER=server, DATABASE=database)

# 读取SQL查询语句
query = open('Pathway_for_SQL_Query.sql').read()

# 指定要传入的参数值
target_date = '2023-12-31'  # 这里可以根据需求动态修改日期

# 传入参数并执行查询
data = pd.read_sql(query, connection, params={'pdate': target_date})

connection.close()

# 后续可以处理data数据
print(data.head())

额外说明

  • 参数绑定方式会自动处理数据类型转换(比如将字符串日期转为SQL的datetime类型),无需手动处理格式
  • 绝对不推荐使用字符串拼接的方式替换SQL中的参数,这种做法存在严重的SQL注入风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:50:12