和SQLite数据库对应的NoSQL数据库:TinyDB的详细使用(python3经典编程案例)

简介: 该文章详细介绍了TinyDB这一轻量级NoSQL数据库的使用方法,包括如何在Python3环境中安装、创建数据库、插入数据、查询、更新以及删除记录等操作,并提供了多个编程案例。

一. 介绍及第一个案例

TinyDB是用纯python编写的NoSQL数据库,和SQLite数据库对应。SQLite是小型,嵌入式的关系型数据库,而TinyDB是小型嵌入式的NoSQL数据库,它不需要外部服务器,也没有任何依赖,使用json文件存储数据。

如果程序处理的数据不多,TinyDB正合适,不需要安装程序,也不需要配置环境,TinyDB很适合小型项目。

TinyDB官方文档:https://tinydb.readthedocs.io/en/latest/index.html

官方使用案例:https://pypi.org/project/tinydb/#example-code

使用前需要安装:pip3 install tinydb

第一个案例:

from tinydb import TinyDB, Query
db = TinyDB('data.json')
User = Query()
db.insert({
   'name': 'John', 'age': 22})
search_data = db.search(User.name == 'John')
print(search_data)

二. 详细使用

1. 插入数据

from tinydb import TinyDB, Query


db = TinyDB('data.json')
# 一次写一条数据
db.insert({
   'type': 'apple', 'count': 7})
el = db.insert({
   "type": "peach", "count": 3})
print(el)  # 返回key
'''
    1、传入的数据形式应该是字典:{数据}
    2、{数据}作为value被传入,对应的key是 '1'、'2'、'3'...,依次排下去
    json文件的内容:
        {"_default": {
                "1": {"type": "apple", "count": 7},
                "2": {"type": "peach", "count": 3}}
        }
'''
# 一次写多条数据
# 用列表一次传多条数据,列表的元素是字典: [{},{},{}]
em = db.insert_multiple(
    [
        {
   'name': 'John', 'age': 22},
        {
   'name': 'John', 'age': 22},
        {
   "type": "peach", "count": 3}
    ]
)
print(em)  # 一次写多条,返回的是列表

2. 读数据

from tinydb import TinyDB, Query


db = TinyDB('data.json')
em = db.all()

for item in db:
    print(item)

print(em)  # 一次写多条,返回的是列表

3. 查询数据

from tinydb import TinyDB, Query

db = TinyDB('data.json')

Q = Query()
# 查询 (==, !=, >, >=, <, <=)
db.search(Q.type == 'apple')

db.insert({
   '名字': '桃子'})
p = db.search(Q.名字 == '桃子')
print(p)

4. 更改数据

from tinydb import TinyDB, Query

db = TinyDB('data.json')
Q = Query()

db.update({
   '名字':'苹果'}, Q.名字 =='桃子')
print(db.all())

5. 删除数据

from tinydb import TinyDB, Query
db = TinyDB('data.json')

Q = Query()
a = db.remove(Q.名字 == '苹果')
print(db.all())

三. 综合案例

1. 创建,插入,查询,删除和更新操作

from tinydb import TinyDB, Query, where
db = TinyDB('db.json')
# 插入两条数据
db.insert({
   'name': 'John', 'age': 22})
db.insert({
   'name': 'apple', 'age': 7})
# 输出所有记录
print(db.all())
# [{u'age': 22, u'name': u'John'}, {u'age': 7, u'name': u'apple'}]
# 查询
User = Query()
print(db.search(User.name == 'apple'))
# [{u'age': 7, u'name': u'apple'}]
# 查询
print(db.search(where('name') == 'apple'))
# 更新记录
db.update({
   'age': 11}, where('name') == 'apple')
# [{u'age': 10, u'name': u'apple'}]
# 删除age大于20的记录
db.remove(where('age') > 20)
# 清空数据库
# db.purge()

2. 插入并读取

from tinydb import TinyDB, where
from tinydb.storages import MemoryStorage


def testBasicOperation():
    def addone(x):
        x['int'] += 1
    default_db = TinyDB('default.json')
    real_table = default_db.table("real")

    print("{a}打开了数据库{tablename}{a}".format(
        a="*" * 20, tablename=default_db.name))

    default_db.insert({
   'int': 1, 'char': 'a'})
    default_db.insert({
   'int': 2, 'char': 'b'})
    default_db.insert({
   'int': 3, 'char': 'c'})
    default_db.insert({
   'int': 4, 'char': 'd'})
    real_table.insert({
   'int': 5, 'char': 'e'})
    real_table.insert({
   'int': 6, 'char': 'f'})
    real_table.insert({
   'int': 7, 'char': 'g'})
    real_table.insert({
   'int': 8, 'char': 'h'})

    # print('进行对每一个元素打印的操作:')
    # default_db.process_elements(lambda data, doc_id: print(data[doc_id]))

    print("deafult_db中每一个int字段加1")
    default_db.update(addone)

    # print('进行对每一个元素打印的操作:')
    # default_db.process_elements(lambda data, doc_id: print(data[doc_id]))

    print("default_db中有的所有表段为:", default_db.tables())
    print("default_db中所有的数据为:", default_db.all())

    # default_db.purge_tables()
    # print("{a}清除了所有表{a}".format(a="*" * 20))
    # print("db中有的所有表段为:", default_db.tables())
    # print("default_db中所有的数据为:", default_db.all())

    print("{a}关闭了表{tablename}{a}".format(
        a="*" * 20, tablename=default_db.name))
    default_db.close()


def testMemoryStorage():
    db = TinyDB(storage=MemoryStorage)
    db.insert({
   'data': 5})
    print(db.search(where('data') == 5))


# testMemoryStorage()

testBasicOperation()
相关文章
|
2月前
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
239 77
|
3月前
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
208 14
|
4月前
|
SQL 数据库连接 Linux
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
98 16
|
4月前
|
数据库 Python
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
|
5月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
137 19
|
4月前
|
搜索推荐 算法 程序员
6个案例15分钟让你了解Python套路
Python以其简洁易读的语法,成为编程初学者的首选。本文通过7个经典代码案例,带你快速了解Python编程的核心概念和常用技巧: 1. **九九乘法口诀**:使用嵌套循环打印乘法表。 2. **列表求和**:展示两种方法(for循环和内置函数sum())计算列表元素之和。 3. **素数判断**:编写函数判断一个数是否为素数。 4. **斐波那契数列**:生成指定长度的斐波那契数列。 5. **冒泡排序**:实现简单的冒泡排序算法。 6. **汉诺塔问题**:通过递归解决经典的汉诺塔问题。 这些案例不仅展示了Python的基础语法,更体现了编程思维的重要性,帮助初学者逐步掌握编程套路。
100 2
|
4月前
|
SQL 关系型数据库 数据库连接
|
7月前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
842 15
|
7月前
|
SQL Java 数据库连接
JDBC编程安装———通过代码操控数据库
本文,教你从0开始学习JBCD,包括驱动包的下载安装调试设置,以及java是如何通过JBDC实现对数据库的操作,以及代码的分析,超级详细
|
8月前
|
数据库连接 Go 数据库
Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性
本文探讨了Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性;防御编程则强调在编码时考虑各种错误情况,确保程序健壮性。文章详细介绍了这两种技术在Go语言中的实现方法及其重要性,旨在提升软件质量和可靠性。
124 1

热门文章

最新文章

推荐镜像

更多