和SQLite数据库对应的NoSQL数据库:TinyDB的详细使用(python3经典编程案例)
Posted cui_yonghua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了和SQLite数据库对应的NoSQL数据库:TinyDB的详细使用(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打开了数据库tablenamea".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关闭了表tablenamea".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()
以上是关于和SQLite数据库对应的NoSQL数据库:TinyDB的详细使用(python3经典编程案例)的主要内容,如果未能解决你的问题,请参考以下文章
轻量级NoSQL数据库与PythonWeb-Flask框架组合使用1-SQLite3介绍及安装教程