面向文档的小型数据库

jardb的Python项目详细描述


https://img.shields.io/badge/pypi-v0.0.5-green.svgLicensehttps://travis-ci.org/andytt/jardb.svg?branch=masterhttps://coveralls.io/repos/github/andytt/jardb/badge.svg?branch=master

jardb是一个小型的面向文档的数据库,它是nosql,易于使用 而且很小。

它适合本地应用程序保存数据和配置。

jardb只使用python标准库。

信息

Author:Lutong Chen
Vision:0.0.5
License:MIT
mail:lutong98@mail.ustc.edu.cn

功能

  1. 快速:1千万分钟内插入。
  2. 简单:api易于学习和使用。
  3. Tiny:一个基于文件的数据库。
  4. 自动:从内存自动保存到磁盘。
  5. 日志:将日志写入文件
  6. 测试:超过90%的单元测试覆盖率。

安装

pip是新的,python 2.7和3.3+是必需的。

>>> pip install jardb

>>> pip3  install jardb

用法

储存

有三种存储方式:json、二进制文件和memery。

  • “json://”:将创建一个json文件,可以看到所有信息。
  • file://”:pickle.dump创建的二进制文件
  • “memery://”:所有数据都不会保存为文件,并在jardb退出后消失。

打开一个jardb数据库应该是一个类似url的字符串,以“json://”、“file://”或“memery://”开头:

>>> from jardb import jardb
>>> db = jardb("json://database.db")

其他参数:

param autosave:boolean, use autosave or not.
param debug:print logs in the terminal.
param log:A log file path.If defined,logs will be written into it.

读取、初始化、保存并关闭

创建一个新数据库,如:

>>> db.create()

从现有文件打开:

>>> db.open()

保存到磁盘:

>>> db.save()

“另存为”另一个文件:

>>> db.backup("file_path")

你应该明白,如果你打开它,它可能会导致性能 丢失(虽然有点),如果你关闭它,你应该保存你的数据库 有时,因为它只会将数据写入文件一次 在它退出之前。

关闭数据库,如:

>>> db.close()

jardb.close()将调用jardb.save()。 此外,在JADB退出之前,JADB将自动调用。

创建dbtable和dbconfig

有两种元素可以直接插入数据库: dbconfig和dbtable。

  • dbconfig类似于python字典或“.plist”、“.ini”或“.conf”文件。
  • dbtable是数据库中的常用表。

创建新的dbconfig:

>>> db.create_config(config_name,{'AppName':'jardb','Version':'0.0.3'})
param config_name:
name.
param config_dict:
a python dictionary.

配置名称将不检查唯一性。请小心。

创建新表:

>>> create_table('Users',{}):
param table_name:
You know what it means.
param table_attr:
properties for fields in this table.

它应该是字典。字典键应该是字段名,例如 “用户”,“电子邮件”。字典值应该是包含其属性的列表, 例如[“autoincrease”,“unique”,“notnull”]

“Unique”:jardb will check the Uniqueness of certain field.
“NotNull”:jardb will check before insert.
“AutoIncrease”:If the field is not be specified,jardb will automatical appoint one.

你不必所有的字段。如果其中不包含 财产。

示例:
{'id':['autoincrease','unique'],'data':['notnull','unique']}

表名不会检查唯一性。请小心。

删除dbconfig或dbtable
>>> db.remove('Users')

查询和操作

在操作dbconfig或dbtable之前,需要获取查询对象

>>> q1 = db.get_config('Config')
>>> q2 = db.get_table('Users')

下面是一些示例:

>>> q1.add({'user':1,'secure':2})   # Insert value
>>> q1.add({'user':5,'data':123})   # Insert and change value
>>> q1.remove('secure')             # Remove
>>> print(q1.has('secure'))         # Has key
False
>>> print(q1.has('user'))
True
>>> print(q1.get('secure'))         # Get value
None
>>> print(q1.get('user'))
5
>>> print(q1.value())               # Show raw data
{'user': 5, 'data': 123}

另一个例子:

获取查询对象。

>>> q2 = db.get_table('Users')
  • filter可以使用类似python的语言选择记录。
  • remove可以删除记录。
>>> q2.filter("$id %3 == 0 and is_admin == True").remove()
  • update可以更改选定记录的值。
>>> q2.update({'is_admin':False})
  • find是另一种选择记录的方法。
  • sort按特定字段对记录排序。
  • get可以获取“顶级k”记录。
  • value用于显示原始数据
>>> q2.find({'is_admin':False}).sort('id').get(5).value()
  • map:给定一个字段名,并返回该字段的所有值。
>>> print(col.filter("$User_id % 4 == 0").map('id'))

使用所有这些函数,您可以轻松地使用jardb

也可以使用jardb.compose操作数据库。源代码中有更多详细信息。

对数

您可以将日志写入如下文件:

>>> db = jardb.jardb('json://database.db',log = 'database.log')

同时让它在终端中打印:

>>> db = jardb.jardb('json://database.db',debug = True)

注意,如果指定了log参数,则无论“debug”是真是假,都会在文件中找到log。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
MIME类型多部分/混合的java无对象DCH   Java Swing中单元格和列的间距   java为什么我不能使用For循环从集合中获取元素?   mysql Java餐厅计费系统   java MediaPlayer内存消耗   println Java添加的神秘输出:一些经过评估,一些经过打印   java我应该使用哪个对象?   PHP到Java论坛游戏集成   通过GeoNetwork上的java http post请求获取XML响应   java为什么类名与使用“==”的内部字符串比较冲突?   java反应。js如何定义自定义id,而不是在html中显示reactselect1value   java中的拼字数组   java如何使ScheduledExecutorService在其计划任务取消时自动终止   java查询未正确执行   IBatis+Java:检索HashMap   要读取的加密Java代码。txt文件并转换为二进制表示形式   Java Web Start应用程序自动加载   java Swing重写对象的paintComponent