- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在编写 SQLAlchemy 代码,它接受搜索栏的输入并对我的 PostgreSQL 数据库运行查询。为了允许拼写错误和名称片段,我使用这段代码来解决问题:
q = session.query(Detail).filter((Detail.sellers.ilike("%%%s%%" % (name_input)))).all()
现在我正在尝试做同样的事情,但要检查具有多个输入值的列表 names
。我是这样完成的:
q = session.query(Detail).filter((Detail.sellers.in_(names))
然而,这需要完全匹配。我想结合使用 ilike
运算符和 in_
运算符。这可能吗?我试过:
q = session.query(Detail).filter((Detail.sellers.ilike.in_(names))
这给出了以下回溯和错误:
File "/Users/Tom/projects/land-records/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/Users/Tom/projects/land-records/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/Users/Tom/projects/land-records/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Users/Tom/projects/land-records/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/Users/Tom/projects/land-records/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/Tom/projects/land-records/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/Tom/projects/land-records/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/Tom/projects/land-records/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/Tom/projects/land-records/repo/scripts/app.py", line 162, in search
return query_db(names)
File "/Users/Tom/projects/land-records/lib/python2.7/site-packages/flask_cache/__init__.py", line 537, in decorated_function
rv = f(*args, **kwargs)
File "/Users/Tom/projects/land-records/repo/scripts/app.py", line 106, in query_db
q = session.query(Detail).filter((Detail.sellers.ilike.in_(names))).all()
AttributeError: 'function' object has no attribute 'in_'
最佳答案
如果只是不区分大小写的 'in_' 语句:
from sqlalchemy import func
q = session.query(Detail).filter(
func.lower(Detail.sellers).in_(map(str.lower, names))
)
否则,如果您想要多个“喜欢”语句,
from sqlalchemy import or_
conditions = []
for name in names:
conditions.append(Detail.sellers.ilike('%{}%'.format(name)))
q = session.query(Detail).filter(
or_(*conditions)
)
我还没有测试它,如果它不起作用,我可以编辑它。
关于python - 对于 SQLAlchemy 查询,如何将 ilike 搜索运算符与 in_ 运算符结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25366895/
我想通过匹配名字和姓氏字段来搜索用户。 在普通 SQL 中我会这样做: SELECT * FROM user WHERE (first_name ILIKE 'pattern') OR (last_n
我在 amazon redshift 中运行了以下三个查询: select count(*) from t1 计数为 1554。 select count(*) from t1 where
在 PostgreSQL 中,您可以使用 ILIKE 执行不区分大小写的查询: select * from test where value ilike 'half is 50$%' escape '
以下两个查询组件的性能比较如何? 点赞 ... LOWER(description) LIKE '%abcde%' ... 我喜欢 ... description iLIKE '%abcde%' ..
我有一个 Users 表,其中包含一个包含用户全名的 name 字段。 我编写了一个搜索功能,应该允许通过名字或姓氏查找用户,但它只返回名字的结果。 例如,如果我有一个用户:user.name = '
是否有一种简单的临时方式来执行 ILIKE查询表的所有文本列? 我知道有一个包含“foobar”的单元格。但是该表有很多列并且只有 50k 行,因此搜索所有列和行应该很快。 最佳答案 我给你这个查询是
假设我有一些子查询返回的字符串数组。我想确保至少有一个元素与字符串匹配(例如:ILIKE "%alex%")。我该怎么做? 我的代码: ANY(ARRAY["Alexander", "Michael"
我正在尝试在 Sequelize 中执行以下等效查询 SELECT * FROM users u WHERE concat('%', u.name, '%', u.surname,'%') ILIKE
我需要做一个查询来搜索以 'Nome % teste\/' 作为前缀的文本。我正在使用以下方法进行查询: where "name"ILIKE 'Nome a% teste\/%' ESCAPE 'a'
我正在尝试使用 ILIKE 查询 PostgreSQL 中的用户名。有 first_name 和 last_name 的列,我希望搜索词与两个串联的词相匹配,中间有一个空格,以便用户可以使用一个输入搜
因此,我尝试通过比较旧标题并将其更新为新标题来使用用户输入的新事件标题更新日历。这是代码 $result = pg_prepare($conn, "event_update", "UPDATE cal
我有一个 people 表,其中 body 列作为 jsonb 类型。 Table "public.people"
我有一个包含多个测试字段的查询,如下所示: SELECT * FROM some-table WHERE field1 ILIKE "%thing%" OR field2 ILIKE "
这是 Postgresql 9.2.4 上的设置: CREATE TABLE table ( id integer NOT NULL, some_text text ); 现在我们输入
我有一个这样的查询,它返回与给定查询匹配的文本行: SELECT content FROM messages WHERE created_at >= '2021-07-24T20:17:18.14
我写了一个finder如下: @cars = @cars.joins(:manufacturers).where("manufacturers.name ILIKE ?", params[:manuf
我有这 3 列: 当我使用这个查询时: SELECT "code", "desc", "lt_status_uuid" FROM "product_info" WHERE "lt_status_uui
在 PostgreSQL 9 中使用 LIKE/ILIKE 运算符时,是否可以匹配单词边界而不必使用完整的 ~ 运算符正则表达式? 例如 SELECT 'Super fast training' IL
我的应用程序有一个页面,其中显示了以特定字母开头的州的所有城市。 例如: State: Alabama, Page A --> All cities in Alabama starting with
我必须选择表(我们称之为 mytable)中给定列(我们称之为 mycolumn)中的值为 不等于“A”且不等于“S”。 所以我尝试了类似的东西 SELECT * FROM mytable WHERE
我是一名优秀的程序员,十分优秀!