面向文档的小型数据库

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第三方库


热门话题
Java类之间并发性不一致的HashMap   插件如何在JavaSwing中使用UIManager和Classloader从外部jar安装外观?   java JasperReports:找不到子报表   在项目中找不到java生成的Javadoc文件   java BigDecimal。multiply()和divide()方法返回十六进制数。为什么?   java统计出现次数并从字符串中删除重复项   调用运算符时发生java NullPointerException   Spring和Hibernate之间的java配置错误   JavaZK将用户重定向回上一页   Javasocket为传出连接指定特定的网络接口   如果拖动到某个区域外,java Make按钮操作将被取消   如何在Eclipse for selenium 3.141.59中添加Java文档链接   java从匹配条件的数组中获取所有索引   docker未连接到RemoteWebDriver的java Gitlab ci selenium测试   java重写run方法   utf 8如何使用java解码UTF8编码的字符串?   java如何从eclipse调试部署在tomcat上的web应用程序?   将字母字符与前面没有百分号的Java正则表达式匹配