python SQL数据库查询

2024-06-25 22:51:09 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的查询工作正常,只是我需要将变量my_date传递给查询,以使代码动态工作,而不是刷新上个月底的固定值。有人能帮忙吗

下面是一个示例代码:

import my_db
import pandas as pd
import datetime

today = datetime.date.today()
first = today.replace(day=1)
lastMonth = first - datetime.timedelta(days=1)

my_date = lastMonth.strftime('%Y-%m-%d')

my_db =  my_sql_database()
my_query= '''SELECT DISTINCT
            P.ID
            P.VALUE

            FROM P

            WHERE  P.SERIES_DATE = '2019-08-31'
            AND P.PERF_START < Convert(datetime,'2019-08-31')            

            ORDER BY P.ID''' 

my_df = pd.read_sql(my_query, my_db)

Tags: 代码importid示例dbsqltodaydatetime
1条回答
网友
1楼 · 发布于 2024-06-25 22:51:09

通常的方法是用占位符标记替换查询中的文字日期'2019-08-31'(通常是%s?,具体取决于您使用的特定数据库引擎),然后传入一个额外的参数,该参数包含要替换占位符的实际值

因此,您的查询结果如下所示:

SELECT DISTINCT
P.ID
P.VALUE
FROM P
WHERE  P.SERIES_DATE = %s
AND P.PERF_START < Convert(datetime, %s)            
ORDER BY P.ID

然后,正如@jpmc26所评论的,您将使用params参数传入占位符的实际值:

my_df = pd.read_sql(my_query, my_db, params=['2019-08-31', '2019-08-31'])

相关问题 更多 >