2

Python プロジェクトでTinyDBを使用しています。ただし、ロジックを有効にするには、クエリで複数のオブジェクトを取得できる必要があります。私の好みは、リストを使用することです

listOfIDs = ['123', '456']

最新の Python バージョンと TinyDB 実装を使用しています。

私は次の実装を持っています:

from tinydb import TinyDB, Query
db = TinyDB('db.json')
myDBQuery= Query()
db.insert({'id': '123', 'name': 'bob'})
db.insert({'id': '456', 'name': 'mary'})
result = db.search(myDBQuery.id.all(['123', '456']))
print(result)

ただし、結果として次の結果が得られます。

[]

以下を実行すると、期待どおりの結果が得られるため、実装が機能していることはわかっています。

result = db.search((myDBQuery.id == '123') | myDBQuery.id == '456'))

TinyDB でリストをクエリする方法を知っている人はいますか?

TinyDB でリストをクエリする方法を知っている人はいますか?

編集

不思議に思っている人のために、現在の実装でそれを行う方法はありません。私の唯一の回避策は、次のようなものを作成することです

def getAllObjectsMatchingId(listOfIds):

tempList = []

for idMember in tempList:
    result = db.search(myDBQuery.id == idMember)
    tempList.append(result)

return tempList
4

3 に答える 3

2

.allリストのすべての要素がクエリに一致する場合にのみ true を返します

.any代わりに動作する可能性があります

result = db.search(myDBQuery.id.any(['123', '456']))

質問OPからの編集:上記の私の編集をご覧ください

于 2016-12-26T02:49:12.120 に答える