在 Python 中,如何在 TinyDB 数据库中搜索值中的子字符串?

In Python, how do I search a TinyDB database for substrings in the values?

我为一个项目创建了一个数据库,我希望能够在数据库中搜索值,但比简单的 == 操作要好。例如,如果有人输入 "columbia" 进行搜索,我希望字典中包含 "Columbia University " 作为该特定人 "Affiliation" 键的值

您可以使用正则表达式进行搜索:

>>> db.search(User.name.matches('[aZ]*'))
>>> db.search(User.name.search('b+'))

这些对应于 Python 的 re.match and re.search,其中后者搜索可能在字符串中任何位置开始的出现。

或者,您可以像这样使用自定义测试表达式:

>>> test_contains = lambda value, search: search in value
>>> db.search(User.name.test(test_contains, 'Columbia'))

有关详细信息,请参阅 relevant section of the TinyDB docs