Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

Documentation:

http://lsbardel.github.com/python-stdnet/

Dowloads:

http://pypi.python.org/pypi/python-stdnet/

Source:

https://github.com/lsbardel/python-stdnet

Keywords:

server, database, cache, redis, orm

–

An object relational mapper for remote data structures.

The data is owned by different, configurable back-end databases and it is accessed using a light-weight Object Relational Mapper (ORM) inspired by Django and SQLAlchemy. The source code and documentation are hosted at github while Downloads are available via PyPi.

Requirements

  • You need access to a Redis server.

  • redis-py version 2.0 or higher.

Installing

To install, download, uncompress and type:

python setup.py install

otherwise use easy_install:

easy_install python-stdnet

or pip:

pip install python-stdnet

Documentation

StdNet uses Sphinx for its documentation, and the latest is available at GitHub:

Version Check

To know which version you have installed:

>>> import stdnet
>>> stdnet.__version__
'0.3.2'

Running Tests

At the moment, only redis back-end is available and therefore to run tests you need to install Redis. If you are using linux, it can be achieved simply by downloading, uncompressing and running make, if you are using windows and want to save yourself a headache you can download precompiled binaries at servicestack.

Once done that, open a shell and launch Redis. On another shell launch python and type:

>>> import stdnet
>>> stdnet.runtests()

otherwise from the package directory:

python runtests.py

BE WARNED! RUNNING TESTS WILL DESTROY ANYTHING IN LOCALHOST REDIS DATABASE 13. MAKE SURE YOU DONT HAVE ANYTHING ON DATABASE 13 OTHERWISE FOLLOW INSTRUCTIONS BELOW

Default settings

Running tests with the above commands assumes your Redis server is running on the same machine and it will use the database 13.

StdNet comes with two default settings.

>>> from stdnet.conf import settings
>>> settings.__dict__
{'DEFAULT_BACKEND': 'redis://127.0.0.1:6379/?db=7', 'DEFAULT_KEYPREFIX': 'stdnet'}

If your redis server runs on a different machine, or you would like to use a different database number, you need to setup a script file along these lines:

if __name__ == '__main__':
    import stdnet
    stdnet.runtests('redis://your.server.url:6379/?db=10')

Backends

Backend data-stores provide the backbone of the library, while the Object Relational Mapper the syntactic sugar. Currently the list of back-ends is limited to

Only Redis is operational.

Object Relational Mapper

The module stdnet.orm is the ORM, it maps python object into database data. It is design to be fast and safe to use:

from stdnet import orm

class Base(orm.StdModel):
    '''An abstract model. This won't have any data in the database.'''
    # A unique symbol field, a symbol is an immutable string
    name = orm.SymbolField(unique = True)
    # Another symbol, symbol fields are by default indexes
    ccy  = orm.SymbolField()

    def __str__(self):
        return str(self.name)

    class Meta:
        abstract = True


class Instrument(Base):
    itype = orm.SymbolField()


class Fund(Base):
        # A char field is a string and it is never an index
    description = orm.CharField()


class PositionDescriptor(orm.StdModel):
    dt    = orm.DateField()
    # A float field is not an index by default
    size  = orm.FloatField()
    price = orm.FloatField()
    # A FK field which we explicitly set as non-index
    position = orm.ForeignKey("Position", index = False)


class Position(orm.StdModel):
    instrument = orm.ForeignKey(Instrument, related_name = 'positions')
    fund       = orm.ForeignKey(Fund)
    history    = orm.ListField(model = PositionDescriptor)

    def __str__(self):
        return '%s: %s @ %s' % (self.fund,self.instrument,self.dt)

Register models with backend:

orm.register(Instrument,'redis://localhost/?db=1')
orm.register(Fund,'redis://localhost/?db=1')
orm.register(PositionDescriptor,'redis://localhost/?db=2')
orm.register(Position,'redis://localhost/?db=2')

And play with the API:

>>> f = Fund(name="pluto,description="The super pluto fund",ccy="EUR").save()
Fund: pluto

Kudos

  • Redis simply because this library uses its awesome features.

  • Django for inspiration and the dispatch module.

  • Armin Ronacher and Ask Solem for the celery sphinx theme used for the documentation.

Contributing

Development of StdNet happens at Github: http://github.com/lsbardel/python-stdnet

You are highly encouraged to participate in the development.

Licence

This software is licensed under the New BSD License. See the LICENSE file in the top distribution directory for the full license text.

Metadata

Release files for python-stdnet 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for python-stdnet 0.4.0
File Size Uploaded
python-stdnet-0.4.0.tar.gz 75.9 kB Details

Release files / python-stdnet-0.4.0.tar.gz

Download URL python-stdnet-0.4.0.tar.gz
Size 75.9 kB
Tags Source
SHA-256 checksum
How to use checksums
56154e571b7cdf1b9a8b5f19686c12abb6d31d512df13354aafdbdfa050ed821
BLAKE2b-256 checksum
How to use checksums
ac0fc02d272895767440d01867c446eaea860fa853ec3c982b79429d120fd573
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page