非关系数据库的对象数据映射器和高级查询管理器。
python-stdnet的Python项目详细描述
用于非关系数据库的对象数据映射器和高级查询管理器。
数据属于不同的、可配置的后端数据库,并且 使用轻量级对象数据映射器(ODM)访问。ODM呈现 将用户定义的python类与数据库集合关联的方法, 以及在相应集合中包含items的类的实例。 对于不同的后端数据库,集合和项是不同的,但是 在python语言域中以相同的方式处理。
Master CI: | |
---|---|
Dev CI: | |
Documentation: | http://pythonhosted.org/python-stdnet/ |
Dowloads: | http://pypi.python.org/pypi/python-stdnet/ |
Source: | https://github.com/lsbardel/python-stdnet |
Mailing List: | https://groups.google.com/group/python-stdnet |
Keywords: | server, database, cache, redis, mongo, odm |
内容
Features
- 具有标量和多值字段的模型。
- 丰富的查询api,包括联合、交集、排除、范围等。
- 通过后端脚本(用于redis的lua)实现最少的服务器往返。
- 全文搜索。
- 信号处理,以允许分离的应用程序在更改时得到通知。
- 同步和异步数据库连接。
- 多变量数字时间序列应用程序。
- 异步发布/订阅应用程序。
- 90%的测试覆盖率。
- 完全记录在案。
Philosophy
键值对数据库,也称为键值存储,有许多不同之处 从传统的关系数据库中, 最重要的是它们不使用SQL作为查询语言, 存储不需要固定的表模式,通常它们不支持 复杂的查询。
STDNET旨在适应灵活的模式和通过连接类型操作。 轻量级对象数据映射器。 重要的是,它的设计考虑到了大数据集。你拉数据 你需要的,不多,不少。 带宽和服务器往返可以减少到最低限度 使您的应用程序快速且内存高效。
Installing
要安装、下载、解压缩并键入:
python setup.py install
否则请使用easy_install:
easy_install python-stdnet
或pip:
pip install python-stdnet
Version Check
要知道您安装了哪个版本:
>>> import stdnet >>> stdnet.__version__ '0.8.0' >>> stdnet.VERSION stdnet_version(major=0, minor=8, micro=0, releaselevel='final', serial=1)
Object Data Mapper
stdnet.odm模块是odm,它将python对象映射到数据库数据中 反之亦然。它的设计是快速和安全使用:
from stdnet import odm class Base(odm.StdModel): '''An abstract model. This won't have any data in the database.''' name = odm.SymbolField(unique = True) ccy = odm.SymbolField() def __unicode__(self): return self.name class Meta: abstract = True class Instrument(Base): itype = odm.SymbolField() class Fund(Base): description = odm.CharField() class PositionDescriptor(odm.StdModel): dt = odm.DateField() size = odm.FloatField() price = odm.FloatField() position = odm.ForeignKey("Position", index=False) class Position(odm.StdModel): instrument = odm.ForeignKey(Instrument, related_name='positions') fund = odm.ForeignKey(Fund) history = odm.ListField(model=PositionDescriptor) def __unicode__(self): return '%s: %s @ %s' % (self.fund,self.instrument,self.dt)
向后端注册模型:
models = orm.Router('redis://localhost?db=1') models.register(Instrument) models.register(Fund) models.register(PositionDescriptor,'redis://localhost?db=2') models.register(Position,'redis://localhost?db=2')
并使用api:
>>> f = models.fund.new(name="pluto, description="The pluto fund", ccy="EUR") >>> f Fund: pluto
Running Tests
目前,只有redis后端可用,因此可以运行测试 需要安装Redis。如果您使用的是linux,可以简单地实现 如果您正在使用 您可以从MSOpenTech找到源代码。
运行测试的要求:
- python-stdnet项目目录。
- pulsar。
要运行测试,请打开一个shell并启动redis。在另一个壳上, 在python-stdnetpackage目录中,键入:
python runtests.py
默认情况下,测试在端口6379和数据库7上的本地redis服务器上运行。 要更改运行测试的服务器和数据库,请通过--server 选项如下:
python runtests.py --server redis://myserver.com:6450?db=12&password=bla
了解更多信息体育:
python runtests.py -h
要访问测试覆盖率,您需要安装coverage包并使用以下命令运行测试:
coverage run runtests.py
以及查看覆盖率报告:
coverage html
Kudos
- Redis只是因为这个库使用了它令人敬畏的特性。
- SQLAlchemy和Django用于思想和api设计。
Contributing
stdnet的开发发生在github:http://github.com/lsbardel/python-stdnet
当然,我们非常欢迎你的贡献。为此,只需遵循以下指导原则:
- Github上的fork python stdnet
- 创建主题分支git checkout -b my_branch
- 推到您的分行git push origin my_branch
- 在https://github.com/lsbardel/python-stdnet/issues创建问题,并链接到修补程序