在Python中将sql查询结果分配给宏变量

2024-04-20 06:42:45 发布

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

我想将这个查询的结果赋给一个变量,并在另一个sql查询中将该变量用作宏变量。在

第一个查询:

start_week = 201619

start_date=connection.execute("""
select min(CAST(date_id as DATE)) as start_date from date_table
where CAST(week_id as INT) = %d
"""
%(start_week))

start_date = start_date.fetchone()

此查询的结果是:(日期时间。日期时间(2017年7月2日0 0日)

第二个查询:现在我想在第二个查询中将它用作宏变量

^{pr2}$

但是,我得到一个错误,例如:

DatabaseError: (cx_Oracle.DatabaseError) ORA-00936: missing expression
 [SQL: '\nselect week_id as start_wk from date_dim\nwhere date_id = (datetime.datetime(2016, 7, 4, 0, 0),)\n']

如果有人教我怎么做,我会很感激的?在

谢谢!在


Tags: fromidexecutesqldatetimedateas时间
1条回答
网友
1楼 · 发布于 2024-04-20 06:42:45

只需将日期时间字符串格式设置为格式:'YYYY-M-D',RDBMS将其读为datetime。另外,将日期作为参数传递,而不是在SQL字符串中插值。请参阅Oracle+Python最佳实践:

str_start_date = datetime.datetime.strftime(start_date[0], '%Y-%m-%d')

cur = connection.cursor()

start_wk = cur.execute("""
   select fis_week_id as start_wk 
   from date_dim
   where date_id = to_date(:sdate, 'yyyy-mm-dd')""", {'sdate':str_start_date})

cur.close()

但是,考虑合并两个查询,而不需要中间变量,其中第一个查询成为第二个查询的WHERE子句中的子查询:

^{pr2}$

相关问题 更多 >