Python安装与使用TinyDB

TinyDB是使用纯Python编写的NoSQL数据库,和SQLite数据库对应。SQLite是小型、嵌入式的关系型数据库,而TinyDB是小型、嵌入式的NoSQL数据库,它不需要外部服务器,也没有任何依赖,使用JSON文件存储数据。本文将详细讲解在Python程序中使用TinyDB的基本知识。

安装TinyDB

关于TinyDB的文档参见其官方网站。TinyDB源代码参见Github网站。在现实应用中,使用如下命令安装TinyDB。

pip install tinydb

如图所示:
Python安装与使用TinyDB

下面的实例文件TinyDB01.py演示了创建、插入、查询、删除和更新TinyDB数据库中数据的过程。

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': 10}, where('name') == 'apple')
# [{u'age': 10, u'name': u'apple'}]
#删除age大于20的记录
db.remove(where('age') > 20)
#清空数据库
db.purge()

执行后会输出:
Python安装与使用TinyDB

使用TinyDB

下面的实例综合演示了插入并读取TinyDB数据库中数据的过程。实例文件test.py的具体实现代码如下。

from tinydb import TinyDB, where
from tinydb.storages import MemoryStorage
def testBasicOperation():
  def addone(x):
   x['int'] += 1
  default_db = TinyDB('test/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("default_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()

执行后会输出:

********************打开了数据库_default********************
对每一个元素进行打印的操作:
{'int': 1, 'char': 'a'}
{'int': 2, 'char': 'b'}
{'int': 3, 'char': 'c'}
{'int': 4, 'char': 'd'}
default_db中每一个int字段加1
对每一个元素进行打印的操作:
{'int': 2, 'char': 'a'}
{'int': 3, 'char': 'b'}
{'int': 4, 'char': 'c'}
{'int': 5, 'char': 'd'}
default_db中所有的表段为: {'real', '_default'}
default_db中所有的数据为:[{'int': 2, 'char': 'a'}, {'int': 3, 'char': 'b'}, {'int': 4,
'char': 'c'}, {'int': 5, 'char': 'd'}]
********************清除了所有表********************
db中所有的表段为: set()
default_db中所有的数据为: []
********************关闭了表_default********************
[{'data': 5}]
赞(1)

评论 抢沙发

评论前必须登录!