Python 正在尝试将SQL查询转换为SQLAlchemy查询
我试图将原始SQL转换为sqlalchemy查询,但到目前为止,我得到了不同的结果。我在尝试sqlalchemy时得到的结果是缺少属性对象(我得到一个带有(ListingCalendarDays,None,PricingData)的元组),因此我认为翻译中缺少了一些内容 原始查询:Python 正在尝试将SQL查询转换为SQLAlchemy查询,python,sql,sqlalchemy,Python,Sql,Sqlalchemy,我试图将原始SQL转换为sqlalchemy查询,但到目前为止,我得到了不同的结果。我在尝试sqlalchemy时得到的结果是缺少属性对象(我得到一个带有(ListingCalendarDays,None,PricingData)的元组),因此我认为翻译中缺少了一些内容 原始查询: result = session.execute("""SELECT p.id as property_id, p.home_code, c.listing_id,
result = session.execute("""SELECT p.id as property_id,
p.home_code,
c.listing_id,
c.calendar_date,
c.available,
ab.price
FROM listing_calendar_days c
LEFT JOIN properties p
ON (p.id::integer = c.listing_id and p.id is not null and p.id <> '')
LEFT JOIN pricing_data ab
ON c.listing_id = ab.listing_id
AND c.calendar_date = ab.price_date
WHERE c.calendar_date >= '%s'
AND c.calendar_date <= '%s' ;""" % ( now.isoformat(), end.isoformat()))
您可以打印出SQLAlchemy通过执行以下操作生成的查询
print(query)
在这种特殊情况下,Properties
的连接条件是错误的str(ListingCalendarDays.listing\u id)
生成文本字符串“ListingCalendarDays.listing\u id”
,而不是转换为varchar
的列listing\u id
。对于强制转换,您需要构造:
cast(ListingCalendarDays.listing_id, String)
此外,您还缺少p.id''
条件
总而言之:
and_(Properties.id == cast(ListingCalendarDays.listing_id, String),
Properties.id != None,
Properties.id != "")
and_(Properties.id == cast(ListingCalendarDays.listing_id, String),
Properties.id != None,
Properties.id != "")