如何在SQL Server查询中使用Python传递datetime



我是新来的,非常感谢您的帮助。

我想在Python中运行这个SQL查询:

SELECT datepoint, type_prix_id, prix
FROM XXXXXX
WHERE datepoint BETWEEN '22/07/2020 00:10:00' AND '23/07/2020'  
AND type_prix_id = 25

所以我写了这个,但是我对日期有一个问题:

#test appel DB
import pyodbc 
import pandas as pd
import datetime
import time as tt
connexion = pyodbc.connect('Driver={SQL Server};'
'Server=XXXXX;'
'Database=XXXXX;'
'UID=XXXXX;'
'PWD=XXXXXX')

cursor = connexion.cursor()
cursor.execute('SELECT * FROM database.dbo.table WHERE datepoint BETWEEN '22/07/2020 00:10:00' AND '23/07/2020' ')
for row in cursor:
print(row)

当我删除日期参数时,这段代码可以工作,但它总是失败。我已经研究过了,我发现我必须为日期传递一个参数,但我不知道如何做到这一点。

我真的很感激你们的帮助。

祝你今天愉快!

可以通过使用参数和?占位符,如

cursor.execute("SELECT * FROM database.dbo.table WHERE [datepoint] BETWEEN ? AND ? ",
'2020-07-22 00:10:00','2020-07-23')

为了有一个SQL Select语句,它是清晰和安全的SQL注入

注:使用没有转义的单引号是违规的。因此,将抛出一个错误。

我的问题解决了:

date_timedeb_str = '2020-07-26 00:10:00'
date_time_obj1 = datetime.datetime.strptime(date_timedeb_str, '%Y-%m-%d %H:%M:%S')
date_timefin_str = '2020-07-29 00:10:00'
date_time_obj2 = datetime.datetime.strptime(date_timefin_str, '%Y-%m-%d %H:%M:%S')
cursor.execute("""
SELECT datepoint, type_prix_id, prix FROM database.dbo.table  WHERE datepoint BETWEEN ? AND ? AND type_prix_id = ?
""",(date_time_obj1),(date_time_obj2),(25))
for row in cursor:
print(row)

相关内容

  • 没有找到相关文章

最新更新