如何在Python中使用TinyDB

1,182 阅读5分钟

如何在Python中开始使用TinyDB

在这篇文章中,我们将了解TinyDB,它完全由Python构建,有大量用于查询和编辑数据库文件的基本工具。

作为一个开发者,你可能从事的大多数项目都需要你存储数据。TinyDB不接受SQL风格的查询,相反它使用Python API检索数据库文件。

不需要设置数据库服务器,因为所有的东西都可以通过保存在存储设备上的文件直接访问,不需要服务器连接。

先决条件

要继续学习本教程,读者需要具备以下条件。

  • Python的基本知识。
  • 对JSON有基本的了解。
  • 对数据库有一定的了解。

什么是TinyDB?

TinyDB是一个用Python设计的紧凑的、面向文档的数据库。它有一个漂亮干净的API,使用起来很简单,它也很适合建立简单的个人项目。

TinyDB的优点?

  • 它非常适合于需要安装一些数据的个人项目。
  • 它是Tiny ,文档较少。
  • 它是document oriented ,意味着你可以存储任何扩展名为.json 的文件。
  • TinyDB完全用Python编写,不需要使用外部服务器来运行。
  • 它是小型项目的最佳选择。

TinyDB的劣势?

TinyDB不是为你的应用程序建立高级功能的正确选择,例如为表创建索引。

TinyDB的安装

TinyDB很容易在你的电脑上设置。打开你的命令提示符并运行。

pip install tinydb

在你完成安装后,你就可以开始编码了。

如何使用TinyDB

TinyDB主要用于数据库CRUD操作,例如。

  • 创建:将数据插入数据库。
  • 读取:指的是从数据库中读取或获取数据的过程。
  • 更新:对数据库的数据进行修改。
  • 删除:要从数据库中删除数据。

现在一切都准备就绪了,我们必须导入TinyDB库的基本类。我们将利用Python终端来帮助我们进行编码。

from tinydb import TinyDB, Query
db = TinyDB("students_db.json")

通过上面的代码,你刚刚导入了TinyDB和Query。

接下来,构造一个TinyDB实例并向它提供文件名。这将生成一个students db.json 文件,我们的数据将被存储在这里。

在TinyDB中插入数据

由于我们正在使用 "JSON",我们将添加的数据是一个 "python Dictionary"。让我们来看看我们是如何将数据插入数据库的。

# inserting only one data in the database
>>> items = {`name`: `Kennedy`, `Course`: `Nursing`, `year`: 3}
>>> db.insert(item)
# function of the newly created object
1

首先,我们生成了一个名为 "items "的新字典,并将 "name"、"Course "和 "year "的变量分别设定为 "Kennedy"、"Nursing "和 "3"。然后使用insert() 函数将数据插入数据库。

新生成对象的'id 1'由'insert()'函数返回。运行上述代码后,将创建一个新的 "JSON "文件,名为students_db.json 。数据的输入方式如下所述。

{ 
  "_default": {
   "1": {"name": "Kennedy", "Course": "Nursing", "year": 3}
   }
 }

_default 是集合表的名称, 是新创建对象的 。1 id

我们将使用db.insert_multiple (items) 函数来插入多个项目。下面是一个关于如何做到这一点的说明。

# inserting multiple data in the database
>>> items = [
... {`name`: `Catherine`, `Course`: `Law`, `year`: 4},
... {`name`: `Anthony`, `Course`: `Computer science`,`year`: 1},
... {`name`: `Caroline`, `Course`: `Education`,`year`: 3}
... {`name`: `Moris`, `Course`: `Education`,`year`: 3}
... ]
# function to use for multiple data
>>> db.insert_multiple(items) [2, 3, 4, 5]

在上面的代码中,我们建立了一个名为items 的字典集合,并使用insert multiple() 函数添加项目。

我们的 "JSON "文件中的输出将如下图所示。

{
  "_default": {
  "1": { "name": "Kennedy", "Course": "Nursing", "year": 3},
  "2": { "name": "Catherine", "Course": "Law", "year": 4 },
  "3": { "name": "Anthony", "Course": "Computer science","year": 1},
  "4": { "name": "Caroline", "Course": "Education","year": 3}
  "5": { "name": "Moris", "Course": "Education","year": 3}
  }
}

从TinyDB获取数据

TinyDB的数据可以通过各种方式恢复。

我们将使用get() 函数,它将只返回一个匹配的数据。下面是它的工作原理。

# searching data using get() function
>>> db.get(Students.name == 'Catherine')
{"name": "Catherine", "Course": "Law", "year": 4}
# searching none existance data 
>>> db.get(Students.name == 'Ian') 
>>> 

在这里,它在数据库中没有找到任何与Ian 匹配的名字,因此它没有返回任何一个。

我们可以使用db.search() 函数来检索数据。如果没有符合搜索的数据,它就会给你一个空列表作为结果。下面是一个如何在TinyDB中搜索数据的演示。

# searching data using search() function
>>> db.search(Students.course == 'Nursing')
[{"name": "Kennedy", "Course": "Nursing", "year": 3}]
>>> db.search( Students.year == 5 ) 
[]
>>>

为了得到符合我们查询的数据的数量,我们可以使用count() 函数。

# searching matching data using count() function
>>> db.count(Students.course == 'Education') 
2
>>>

在TinyDB中更新和删除数据

在TinyDB中更新数据

update() 函数被用来更新TinyDB数据库中的数据。你可以改变现有数据库字段的值。它将需要调整的值作为第一个参数发送给更新函数,然后将查询作为第二个参数。

# updating data in the database 
>>> db.update({'year': 5}, Students.name == 'Catherine')
[1]
>>>db.update({'course': Engineering}, Students.name == 'Caroline')
[4]

上面的代码将Catherine 的年份从4 更新为5 ,将Carilone 的课程从Education 更新为Engineering 。我们可以要求更新某个数据库中的所有数据,db.all 方法被用来更新所有数据。例如,我们可以将所有学生的年份设置为1 ,如下图所示。

# updating all data in the database using all() function
>>> db.update({'year': 1}) 
[1, 2, 3, 4, 5]
>>> db.all()
{`name`: `Kennedy`, `Course`: `Nursing`, `year`: 1}
{`name`: `Catherine`, `Course`: `Law`, `year`: 1},
{`name`: `Anthony`, `Course`: `Computer science`,`year`: 1},
{`name`: `Caroline`, `Course`: `Education`,`year`: 1}
{`name`: `Moris`, `Course`: `Education`,`year`: 1}

从TinyDB中删除数据

要删除数据,我们使用remove() 函数。如果数据与可选的条件和可选的数据id列表相匹配,则被删除。

# deleting data in the database using remove() function
>>> db.remove(Students.name == 'Kennedy')                              
[1]
>>> db.all() 
# output                     
[{`name`: `Catherine`, `Course`: `Law`, `year`: 1},
{`name`: `Anthony`, `Course`: `Computer science`,`year`: 1},
{`name`: `Caroline`, `Course`: `Education`,`year`: 1}
{`name`: `Moris`, `Course`: `Education`,`year`: 1}]
>>> db.remove(Students.name == 'Ian')
[]
>>> 

要从数据库中删除所有数据,请使用truncate() 函数,如下图所示。

# deleting all data in the database using truncate() function
>>> db.truncate()
>>> db.all()
# output
[]
>>>

上面显示的每一个CRUD操作都有其相应的例子来演示,简单明了,易于理解。

总结

在本教程中,我们了解了TinyDB以及如何对数据库进行CRUD操作。