gpt4 book ai didi

sqlalchemy - 如何在 SQLAlchemy 中编写它

转载 作者:行者123 更新时间:2023-12-01 09:02:41 24 4
gpt4 key购买 nike

我需要在 SQL Alchemy 中编写一个查询来针对包含字符串数组 (Postgre) 的字段检查一些字符串参数

城市状态地址第一行邮政编码电话号码

都是 text[] 类型

    select_statement = bdb.get_select_statement(business_schema)\
.where(((text('array[:acity] <@ city')
and text('array[:astate] <@ state')
and text('array[:aaddress] <@ address_line_1'))
or
(text('array[:aaddress] <@ address_line_1') and text('array[:azip_code] <@ zip_code')))
and (text('array[:aphone] <@ phone_numbers')))\
.params(aaddress = address_line_1, acity = city, astate = state, azip_code = zip_code, aphone = phone_number)

问题是我在执行此操作时收到异常,“未定义此子句的 bool 值”。

要写的纯SQL是:

select * from business where ('address_line1' = ANY (address_line_1) 
and 'acity' = ANY (city)
and 'state' = ANY (state)
or
('adress_line1' = ANY (address_line_1) and 'zip' = ANY (zip_code))
and
'phone' = ANY (phone_numbers)

关于如何做的任何想法?,

提前致谢!

最佳答案

你需要使用 and_()or_() 方法,或者 &&|| 运算符,而不是 Python andor 关键字。

此外,您使用数组索引和“<@”执行的操作更容易执行(在 0.8 中),如下所示:

mytable.c.array[:"acity"].op('<@')(mytable.c.city)

ARRAY .

关于sqlalchemy - 如何在 SQLAlchemy 中编写它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13995225/

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