CRUD interface for SQLAlchemy.
Project description
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/sacrud/sacrud.git
PyPi:
pip install sacrud
Source:
python setup.py install
Contribute
Issue Tracker: http://github.com/sacrud/sacrud/issues
Source Code: http://github.com/sacrud/sacrud
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.