Skip to main content

CRUD interface for SQLAlchemy.

Project description

Build Status Coverage Status Stories in Progress PyPI

sacrud

SACRUD will solve your problem of CRUD interface for SQLAlchemy. Originally created for pyramid_sacrud , but then in a separate project

Look how easy it is to use:

CREATE

from .models import DBSession, Groups
from sacrud.action import CRUD

data = {'name': 'Electronics',
        'parent_id': '10',}
group_obj = CRUD(DBSession, Groups).create(data)
print(group_obj.name)

If the entry already exists, just add the option update=True.

from .models import DBSession, Groups
from sacrud.action import CRUD

data = {'id': 6,  # existing entry
        'name': 'Electronics',
        'parent_id': '10',}
group_obj = CRUD(DBSession, Groups).create(data, update=True)
print(group_obj.name)

READ

from .models import DBSession, Groups
from sacrud.action import CRUD

group_obj = CRUD(DBSession, Groups).read()
print(group_obj.name)

UPDATE

from .models import DBSession, Groups
from sacrud.action import CRUD

group_obj = CRUD(DBSession, Groups).update(1, {'name': 'Chemistry'})
print(group_obj.name)

DELETE

from .models import DBSession, Groups
from sacrud.action import CRUD

CRUD(DBSession, Groups).delete(1)

M2M and M2O data

For adding multiple data for m2m or m2o use endinng [], ex.:

from .models import DBSession, Users
from sacrud.action import CRUD

CRUD(DBSession, Users).create(
    {'name': 'Vasya', 'sex': 1,
     'groups[]': ['["id", 1]', '["id", 2]']}
)

It support composit primary key.

Wraps your SQLAlchemy session

from sqlalchemy.orm import scoped_session, sessionmaker
from sacrud import CRUDSession

Session = scoped_session(sessionmaker(class_=CRUDSession))
DBSession = Session()
DBSession.sacrud(User).delete(1)

Wraps your zope.sqlalchemy session

from sqlalchemy.orm import scoped_session, sessionmaker
from zope.sqlalchemy import ZopeTransactionExtension
from sacrud import crud_sessionmaker

DBSession = crud_sessionmaker(scoped_session(
    sessionmaker(extension=ZopeTransactionExtension())))
DBSession.sacrud(User).delete(1)

Now CRUD available from DBSession.

group_obj = DBSession.sacrud(Groups).create(data)
print(group_obj.name)

Installation

Install from github:

pip install git+http://github.com/ITCase/sacrud.git

PyPi:

pip install sacrud

Source:

python setup.py install

Contribute

Support

If you are having issues, please let me know. I have a mailing list located at sacrud@uralbash.ru and IRC channel #sacrud

License

The project is licensed under the MIT license.

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

sacrud-0.3.2.tar.gz (16.1 kB view details)

Uploaded Source

File details

Details for the file sacrud-0.3.2.tar.gz.

File metadata

  • Download URL: sacrud-0.3.2.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for sacrud-0.3.2.tar.gz
Algorithm Hash digest
SHA256 af510e67e0e18d068be8f6e244795db7d70a1d6ff4d1f63e4cca6cb6028239cd
MD5 b629bef887f6cf96ded11348bc84c9a1
BLAKE2b-256 eb76a2da80ea2faaa8042eb9d5ccf4994b81be8f775852b2ec6d0c9a9da4538a

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