面向文档的小型数据库
jardb的Python项目详细描述
jardb是一个小型的面向文档的数据库,它是nosql,易于使用 而且很小。
它适合本地应用程序保存数据和配置。
jardb只使用python标准库。
信息
Author: | Lutong Chen |
---|---|
Vision: | 0.0.5 |
License: | MIT |
mail: | lutong98@mail.ustc.edu.cn |
功能
- 快速:1千万分钟内插入。
- 简单:api易于学习和使用。
- Tiny:一个基于文件的数据库。
- 自动:从内存自动保存到磁盘。
- 日志:将日志写入文件
- 测试:超过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。