TinyDB - 查询
TinyDB 拥有丰富的查询集。 我们有多种方法来构造查询:第一种方法类似于 ORM 工具的语法,第二种方法是使用"Where"子句的传统方法。
在本章中,我们将了解在 TinyDB 数据库中构造查询的两种方法。
第一种方法:导入查询
第一种方法类似于 ORM 工具的语法,首先我们需要在命令提示符中导入查询。 导入后,我们就可以使用查询对象来操作TinyDB数据库了。 下面给出了语法 −
from tinydb import Query student = Query()
这里,"student"是我们数据库的名称。 对于示例,我们将使用以下student数据库。
[
{
"roll_number":1,
"st_name":"elen",
"mark":250,
"subject":"TinyDB",
"address":"delhi"
},
{
"roll_number":2,
"st_name":"Ram",
"mark":[
250,
280
],
"subject":[
"TinyDB",
"MySQL"
],
"address":"delhi"
},
{
"roll_number":3,
"st_name":"kevin",
"mark":[
180,
200
],
"subject":[
"oracle",
"sql"
],
"address":"keral"
},
{
"roll_number":4,
"st_name":"lakan",
"mark":200,
"subject":"MySQL",
"address":"mumbai"
},
{
"roll_number":5,
"st_name":"karan",
"mark":275,
"subject":"TinyDB",
"address":"benglore"
}
]
示例
以下查询是从student数据库中检索数据,其中学生的roll_no小于3 −
>>> db.search(Query().roll_number < 3)
或者,
>>> student = Query() >>> db.search(student.roll_number < 3)
上面的搜索查询将产生以下结果 −
[
{
"roll_number":1,
"st_name":"elen",
"mark":250,
"subject":"TinyDB",
"address":"delhi"
},
{
"roll_number":2,
"st_name":"Ram",
"mark":[
250,
280
],
"subject":[
"TinyDB",
"MySQL"
],
"address":"delhi"
}
]
有时文件名不是有效的 Python 标识符。 在这种情况下,我们将无法访问该字段。 对于这种情况,我们需要切换到 dict 访问符号,如下所示 −
student = Query(); # Invalid Python syntax db.search(student.security-code == 'ABCD') # Use the following dict access notation db.search(student['security-code'] == 'ABCD')
第二种方法:使用"where"子句
第二种方法是使用"where"子句构建查询的传统方法。 下面给出了语法−
from tinydb import where
db.search(where('field') == 'value')
示例
TinyDB subject 字段的"where"子句 −
db.search(where('subject') == 'MySQL')
上述查询将产生以下输出 −
[{
"roll_number":4,
"st_name":"lakan",
"mark":200,
"subject":"MySQL",
"address":"mumbai"
}]

