python sql语句传参数,如何传入Python参数配置.py到.sql文件?

博客讲述了如何使用Python的Snowflake连接器从SQL文件中提取数据,并希望在不混淆代码的情况下,从配置文件中动态获取开始和结束日期参数来更新SQL查询。作者分享了当前的代码结构和问题,即如何将配置文件中的日期参数同步到SQL查询中,以便根据需要更改时间段进行数据提取。寻求解决方案。
摘要由CSDN通过智能技术生成

我正在使用Python Snowflake连接器从Snowflake中的表中提取数据。以下是我的文件结构:sql

a.sql

b.sql

c.sql

configurations.py

data_extract.py

main.py

这里的sql文件夹包含了.sql文件中的所有sql查询。我将这些sql文件分开放置,因为它们都是一堆行,如果我把它们放到python文件中,它们看起来会很混乱。

在配置.py包含每次运行代码时都要更改的日期时间参数。看起来像这样:

^{pr2}$

我想把这些参数添加到sql文件中。例如,a.sql包含以下内容:DECLARE

@START_PICKUP_DATE DATE,

@END_PICKUP_DATE DATE,

SET

@START_PICKUP_DATE = '2018-10-01'

SET

@END_PICKUP_DATE = '2019-04-01'

select supplier_confirmation_id, pickup_datetime, dropoff_datetime, pickup_station_distance

from SANDBOX.ZQIAN.V_PDL

where pickup_datetime >= START_PICKUP_DATE and pickup_datetime < END_PICKUP_DATE

and supplier_confirmation_id is not null;

我在python代码中使用a.sql,方法如下:def executeSQLScriptsFromFile(filepath):

# snowflake credentials, replace SECRET with your own

ctx = snowflake.connector.connect(

user='S_ANALYTICS_USER',

account=SECRET_A,

region='us-east-1',

warehouse=SECRET_B,

database=SECRET_C,

role=SECRET_D,

password=SECRET_E)

fd = open(filepath, 'r')

query = fd.read()

fd.close()

cs = ctx.cursor()

try:

cur = cs.execute(query)

df = pd.DataFrame.from_records(iter(cur), columns=[x[0] for x in cur.description])

finally:

cs.close()

ctx.close()

return df

def extract_data():

a_sqlpath = os.path.join(os.getcwd(), 'sql\a.sql')

a_df = executeSQLScriptsFromFile(a_sqlpath)

return a_df

问题是我希望同步.sql文件中的START_PICKUP_DATE和END_picku DATE,并等于起始时间和结束时间配置.py文件,这样我只需要更改开始时间和结束时间配置.py并使用雪花中的a.sql提取不同时间段的数据。

我在网上寻找解决方案已经有很长时间了,但是仍然没有找到一个针对我的问题的好的解决方案。非常感谢任何能提供提示的人!在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值