Skip to main content

UNKNOWN

Project description

sqlalchemy_traversal
====================

This is a pyramid extension that allows you to use traversal with SQLAlchemy objects

Demo App here: https://github.com/eventray/sqlalchemy_traversal_demo

To use this you just have to include sqlalchemy_traversal in your pyramid application
by either putting it in your development.ini:

pyramid.includes =
sqlalchemy_traversal

or by including it in your main:

config.include('sqlalchemy_traversal')


Then you just register your SQLAlchemy session and declarative base:

from sqlalchemy_traversal.interfaces import ISASession
from sqlalchemy_traversal.interfaces import ISABase

config.registry.registerUtility(DBSession, ISASession)
config.registry.registerUtility(Base, ISABase)


And then place the TraversalMixin on any SQLAlchemy class and it will automatically
be traversed:

from sqlalchemy_traversal import TraversalMixin


class User(TraversalMixin, Base):
pass


Now you will be able to hit the URL /traverse/user to get all the users in your database


You can also tell it to load relationships via the _json_eager_load property:

class User(TraversalMixin, Base):
_json_eager_load = ['permissions']


Saving
==================================
If you want to be able to create data with your API but the content
coming back doesn't exactly match your model or you want to run it through
schema validation first you can use the register save decorator:

@register_save(MyModel, MySchema):
def saving_my_model(request, data):
data['my_prop'] = 'NEW DATA'
return data

You can also handle data exceptions with exception_handlers:

def handle_integrity_error(model, exception):
return {
'errors': {
'message': 'That data is not unique'
}
}

@register_save(
MyModel
, MySchema
, exception_handlers={
IntegrityError: handle_integrity_error
}
):
def saving_my_model(request, data):
data['my_prop'] = 'NEW DATA'
return data

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sqlalchemy_traversal-0.5.2.tar.gz (11.5 kB view details)

Uploaded Source

File details

Details for the file sqlalchemy_traversal-0.5.2.tar.gz.

File metadata

File hashes

Hashes for sqlalchemy_traversal-0.5.2.tar.gz
Algorithm Hash digest
SHA256 45ab3775ef2154ab7f0b52ff001e2efa9e42a13478bb9f3273d18807d8c2add6
MD5 6ea47ede36b54010ba3a13e5f4e24529
BLAKE2b-256 0346d99eaab53d24c91cadc1c05667d13fd3ffb3652c008b10a6aafeb0a1abe7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page