无意间看到TinyDB这个词汇,就去查了一下,就发现了它的官方网站 这里

然后就是按照他说的步骤去做。

第1步 安装  pip3 install tinydb

安装成功后,创建一个文件名字叫做 test.py,输入下面的代码:

from tinydb import TinyDB, Query

# 创建数据库对象
db = TinyDB('db.json') # 插入数据记录
db.insert({'type': 'apple', 'count': 7})
db.insert({'type': 'peach', 'count': 3}) # 获取所有数据
print('get db all')
print(db.all()) # 遍历所有数据
print('for item in db')
for item in db:
print(item) # 创建查询对象
Fruit = Query() # 查询 type 等于 peach 的
print('search type = peach')
print(db.search(Fruit.type == 'peach')) # 查询 count 大于 5 的
print('search count > 5')
print(db.search(Fruit.count > 5)) # 更新 type 等于 apple 的数据 将其 count 设置为 10
print('update count = 10 where type = apple')
print(db.update({'count': 10}, Fruit.type == 'apple')) # 获取所有数据
print('get db all')
print(db.all()) # 删除 count 大于 5 的所有数据
print('remove where count > 5')
print(db.remove(Fruit.count < 5)) # 获取所有数据
print('get db all')
print(db.all()) # 清空所有数据
print('truncate db')
print(db.truncate()) # 获取所有数据
print('get db all')
print(db.all())

执行  python3 test.py

然后查看结果

get db all
[{'type': 'apple', 'count': 7}, {'type': 'peach', 'count': 3}]
for item in db
{'type': 'apple', 'count': 7}
{'type': 'peach', 'count': 3}
search type = peach
[{'type': 'peach', 'count': 3}]
search count > 5
[{'type': 'apple', 'count': 7}]
update count = 10 where type = apple
[1]
get db all
[{'type': 'apple', 'count': 10}, {'type': 'peach', 'count': 3}]
remove where count > 5
[2]
get db all
[{'type': 'apple', 'count': 10}]
truncate db
None
get db all
[]

我们可以看到结果是正确的,先插入了两条数据,又查出来,然后循环出来看看,之后查询符合条件的数据,然后更新符合条件的数据,删除符合条件的数据,清空数据,都是按照预期来的。

这里有个提醒,我开始设置的这个文件名是 tinydb.py , 然后死活执行不成功,总是提示这个 ImportError: cannot import name 'TinyDB' from partially initialized module 'tinydb'

然后我找不到原因,因为代码是一模一样的,步骤也是一样的,然后我就把这个报错拿到网络上面搜索,总算找到了这篇文章

https://stackoverflow.com/questions/61026339/cannot-import-name-tinydb

这里面他有个回答

他说不能把文件名命名为 tinydb.py ,然后我改了个名字 改为 tiny_db.py

然后执行 python3 tiny_db.py

这回果然是成功了的,所以一定不要起 tinydb.py 这个名字啊!

python3的json数据库-TinyDB初入门的更多相关文章

  1. SpringBoot 初入门

    SpringBoot 初入门 关于介绍什么之类的就不讲了,主要做一下学习记录. 1. 启动方式 IDEA 启动 命令行启动: mvn spring-boot:run 部署到服务器启动: 先进行打包, ...

  2. Python3 的json 和 PHP的json

    Python3操作json的标准api库参考:https://docs.python.org/3/library/json.html#module-json >>> aa = ['/ ...

  3. EJDB 1.1.18 发布,嵌入式JSON数据库

    EJDB 1.1.18 增加对 MongoDB 操作符 $and 和 $or 的支持,支持 MongoDB 的 $ 推断操作符,修复了 $fields 提示的bug,提升了查询处理的性能. EJDB ...

  4. Python3自定义json逐层解析器

    [本文出自天外归云的博客园] 用python3对json内容逐层进行解析,拿中国天气网的接口返回数据测试,代码如下: # -*- coding: utf-8 -*- import operator a ...

  5. python数据库操作 - MySQL入门【转】

    python数据库操作 - MySQL入门 python学院 2017-02-05 16:22 PyMySQL是Python中操作MySQL的模块,和之前使用的MySQLdb模块基本功能一致,PyMy ...

  6. MySQL数据库应用 从入门到精通 学习笔记

    以下内容是学习<MySQL数据库应用 从入门到精通>过程中总结的一些内容提要,供以后自己复现使用. 一:数据库查看所有数据库: SHOW DATABASES创建数据库: CREATE DA ...

  7. python3.7 json模块

    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 json模块 ''' 要在不同的编程语言之间传递对象,就必须把对 ...

  8. Python3连接MySQL数据库实战

    Python3连接MySQL数据库实战 第三方库 :pymysql 数据库连接 def connect(): try: #建立数据库连接,从左至右参数依次为 # ip地址 我用的是云端数据库 如果为本 ...

  9. Python3 连接 Oracle 数据库

    Python3 连接 Oracle 数据库 需要导出一些稍微复杂的数据,用Python处理很方便 环境 Win10 Python 3.7.0 Oracle 11g 安装依赖 安装 cx_Oracle ...

  10. 一篇文章带你了解NoSql数据库——Redis简单入门

    一篇文章带你了解NoSql数据库--Redis简单入门 Redis是一个基于内存的key-value结构数据库 我们会利用其内存存储速度快,读写性能高的特点去完成企业中的一些热门数据的储存信息 在本篇 ...

随机推荐

  1. 数据库中查询含有某个emoji表情的行数据

    数据库中查询含有某个emoji表情的行数据 MySQL的情况 代码如下 ​ create table tt6(id int, name varchar(800)); insert into tt6 s ...

  2. VC 单文档FormView视图增加打印预览

    1修改my.rc文件二处 3 TEXTINCLUDE BEGIN "#define _AFX_NO_OLE_RESOURCES\r\n" "#define _AFX_NO ...

  3. 【转】ElasticSearch报错FORBIDDEN/12/index read-only / allow delete (api) ,read_only_allow_delete 设置 windows

    仅供自己记录使用,原文链接:ElasticSearch报错FORBIDDEN/12/index read-only / allow delete (api)_sinat_22387459的博客-CSD ...

  4. DRBD - Distributed Replication Block Device

    Ref https://computingforgeeks.com/install-and-configure-drbd-on-centos-rhel https://www.veritas.com/ ...

  5. 免费在线OCR识别工具TextIn Tools,开启智能学习新时代

    传统的学习方式,笔记必须手写摘抄:带字照片只能插入文档:PDF转换要花钱买会员-- 而在线OCR识别工具tools.textin.com,既好用又免费,它不仅仅具有文字和表格识别工具,还包含PDF转文 ...

  6. Angular Material 18+ 高级教程 – CDK Accessibility の ListKeyManager

    介绍 ListKeyManager 的作用是让我们通过 keyboard 去操作 List Items. 一个典型的例子:Menu 有 4 个步骤: tab to menu enter 打开 menu ...

  7. Redis 入门 - 收官

    <Redis 入门>系列文章总算完成了,希望这个系列文章可以想入门或刚入门的同学提供帮助,希望能让你形成学习Redis系统性概念. 当时为什么要写这个系列文章,是因为我自己就是迷迷糊糊一路 ...

  8. Angular 18+ 高级教程 – 国际化 Internationalization i18n

    介绍 先讲讲名词. Internationalization 的缩写是 i18n,中文叫国际化. Globalization 是 Internationalization 的同义词,都是指国际化. L ...

  9. IOI2000 邮局 加强版 题解

    [IOI2000] 邮局 加强版 题解 考虑动态规划,设 \(f_{i,j}\) 为经过了 \(i\) 个村庄,正在建第 \(j\)​ 个邮局的最优距离. 以及 \(w_{i,j}\) 表示区间 \( ...

  10. Spring —— 整合MyBatis

    MyBatis核心程序      配置文件    整合MyBatis