和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)
AI 代码解读

二. 详细使用

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)  # 一次写多条,返回的是列表
AI 代码解读

2. 读数据

from tinydb import TinyDB, Query


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

for item in db:
    print(item)

print(em)  # 一次写多条,返回的是列表
AI 代码解读

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)
AI 代码解读

4. 更改数据

from tinydb import TinyDB, Query

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

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

5. 删除数据

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

Q = Query()
a = db.remove(Q.名字 == '苹果')
print(db.all())
AI 代码解读

三. 综合案例

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()
AI 代码解读

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()
AI 代码解读
目录
打赏
0
0
0
0
73
分享
相关文章
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
245 77
用Python编程基础提升工作效率
一、文件处理整明白了,少加两小时班 (敲暖气管子)领导让整理100个Excel表?手都干抽筋儿了?Python就跟铲雪车似的,哗哗给你整利索!
88 11
[oeasy]python081_ai编程最佳实践_ai辅助编程_提出要求_解决问题
本文介绍了如何利用AI辅助编程解决实际问题,以猫屎咖啡的购买为例,逐步实现将购买斤数换算成人民币金额的功能。文章强调了与AI协作时的三个要点:1) 去除无关信息,聚焦目标;2) 将复杂任务拆解为小步骤,逐步完成;3) 巩固已有成果后再推进。最终代码实现了输入验证、单位转换和价格计算,并保留两位小数。总结指出,在AI时代,人类负责明确目标、拆分任务和确认结果,AI则负责生成代码、解释含义和提供优化建议,编程不会被取代,而是会更广泛地融入各领域。
140 28
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
212 14
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
|
4月前
|
[oeasy]python074_ai辅助编程_水果程序_fruits_apple_banana_加法_python之禅
本文回顾了从模块导入变量和函数的方法,并通过一个求和程序实例,讲解了Python中输入处理、类型转换及异常处理的应用。重点分析了“明了胜于晦涩”(Explicit is better than implicit)的Python之禅理念,强调代码应清晰明确。最后总结了加法运算程序的实现过程,并预告后续内容将深入探讨变量类型的隐式与显式问题。附有相关资源链接供进一步学习。
64 4
Python 高级编程与实战:构建 RESTful API
本文深入探讨了使用 Python 构建 RESTful API 的方法,涵盖 Flask、Django REST Framework 和 FastAPI 三个主流框架。通过实战项目示例,详细讲解了如何处理 GET、POST 请求,并返回相应数据。学习这些技术将帮助你掌握构建高效、可靠的 Web API。
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
以上内容是一个简单的实现在Java后端中通过DockerClient操作Docker生成python环境并执行代码,最后销毁的案例全过程,也是实现一个简单的在线编程后端API的完整流程,你可以在此基础上添加额外的辅助功能,比如上传文件、编辑文件、查阅文件、自定义安装等功能。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
6个案例15分钟让你了解Python套路
Python以其简洁易读的语法,成为编程初学者的首选。本文通过7个经典代码案例,带你快速了解Python编程的核心概念和常用技巧: 1. **九九乘法口诀**:使用嵌套循环打印乘法表。 2. **列表求和**:展示两种方法(for循环和内置函数sum())计算列表元素之和。 3. **素数判断**:编写函数判断一个数是否为素数。 4. **斐波那契数列**:生成指定长度的斐波那契数列。 5. **冒泡排序**:实现简单的冒泡排序算法。 6. **汉诺塔问题**:通过递归解决经典的汉诺塔问题。 这些案例不仅展示了Python的基础语法,更体现了编程思维的重要性,帮助初学者逐步掌握编程套路。
101 2

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等