This project has been archived by its maintainers, and is no longer receiving any updates.
- Documentation:
- Dowloads:
- Source:
- 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
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
Local memory (planned). For testing purposes.
CouchDB (planned). Requires couchdb-python.
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
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)
| 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 |