gpt4 book ai didi

python - 尝试将 SQL 查询转换为 SQLAlchemy 查询

转载 作者:太空宇宙 更新时间:2023-11-03 16:49:05 25 4
gpt4 key购买 nike

我正在尝试将原始 SQL 转换为 sqlalchemy 查询,但到目前为止我得到了不同的结果。我从 sqlalchemy 尝试中得到的结果缺少 Property 对象(我返回一个带有 (ListingCalendarDays, None, PricingData) 的元组),所以我认为翻译中缺少一些东西。

原始查询:

   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()))

我的尝试:

query = (session.query( ListingCalendarDays, Properties, PricingData )
.outerjoin(Properties,
and_(Properties.id == str(ListingCalendarDays.listing_id),
Properties.id != None))
.outerjoin(PricingData,
and_(ListingCalendarDays.listing_id == PricingData.listing_id,
ListingCalendarDays.calendar_date == PricingData.price_date))
.filter(ListingCalendarDays.calendar_date.between( now, end )))

result = query.all()

最佳答案

您可以通过执行以下操作打印出 SQLAlchemy 生成的查询

print(query)

在这种特殊情况下,您的加入条件为 Properties是错的。 str(ListingCalendarDays.listing_id)生成文字字符串 "ListingCalendarDays.listing_id" ,而不是列 listing_id类型转换为varchar 。对于 Actor ,您需要 cast() 构造:

cast(ListingCalendarDays.listing_id, String)

此外,您还缺少 p.id <> ''情况。

把它们放在一起:

and_(Properties.id == cast(ListingCalendarDays.listing_id, String),
Properties.id != None,
Properties.id != "")

关于python - 尝试将 SQL 查询转换为 SQLAlchemy 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36038542/

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