gpt4 book ai didi

python - 如何传递日期参数在python pandas中执行sql存储过程

转载 作者:行者123 更新时间:2023-12-01 07:03:41 24 4
gpt4 key购买 nike

这种方式有效:

import pandas
import pyodbc
import datetime as dt

server = 'myserver'
db = 'mydb'
myparams = ['2017-02-01','2017-02-28', None] # None substitutes NULL in sql

connection_string = pyodbc.connect('DRIVER={SQL Server};server='+server+';DATABASE='+ db+';Trusted_Connection=yes;')
df = pandas.read_sql_query('EXEC PythonTest_Align_RSrptAccountCurrentMunich @EffectiveDateFrom=?,@EffectiveDateTo=?,@ProducerLocationID=?', connection_string, params = myparams)

但是这种方式行不通:

import datetime as dt

today = dt.date.today()
prev_monday = today - dt.timedelta(days=9)
prev_sunday = today - dt.timedelta(days=3)

myparams = [prev_monday,prev_sunday, None] # None substitutes NULL in sql

connection_string = pyodbc.connect('DRIVER={SQL Server};server='+server+';DATABASE='+ db+';Trusted_Connection=yes;')
df = pandas.read_sql_query('EXEC PythonTest_Align_RSrptAccountCurrentMunich @EffectiveDateFrom=?,@EffectiveDateTo=?,@ProducerLocationID=?', connection_string, params = myparams)

错误消息:

    cur.execute(*args)
pandas.io.sql.DatabaseError: Execution failed on sql 'EXEC PythonTest_Align_RSrptAccountCurrentMunich @EffectiveDateFrom=?,@EffectiveDateTo=?,@ProducerLocationID=?': ('HYC00', '[HYC00] [Microsoft][ODBC SQL Server Driver]Optional feature not implemented (0) (SQLBindParameter)')

Python中有传递日期参数的具体方法吗?

最佳答案

我的猜测是 SQL 无法处理 pandas 日期时间值,

尝试使用 strftime 将日期时间值传递到字符串中

import datetime as dt

today = dt.date.today()
prev_monday = (today - dt.timedelta(days=9)).strftime('%Y-%m-%d')
prev_sunday = (today - dt.timedelta(days=3)).strftime('%Y-%m-%d')

myparams = [prev_monday,prev_sunday, None]
print(myparams)
['2019-10-14', '2019-10-20', None]

关于python - 如何传递日期参数在python pandas中执行sql存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58531424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com