Usage sacrud

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)

Now CRUD available from DBSession.

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

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)

CREATE action

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

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

CREATE action with 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)

You can pass JSON data:

CREATE action with JSON data
from .models import DBSession, Groups
from sacrud.action import CRUD

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

For more details see:

READ action

All users
DBSession.sacrud(Users).read()
SELECT one row with composite primary key
DBSession.sacrud(User2Groups).read({'user_id': 4, 'group_id': 2})
SELECT several rows with composit primary key
primary_keys =[
   {'user_id': 4, 'group_id': 2},
   {'user_id': 4, 'group_id': 3},
   {'user_id': 1, 'group_id': 1},
   {'user_id': 19, 'group_id': 2}
]
rows = DBSession.sacrud(User2Groups).read(*primary_keys)
Delete rows
rows.delete(synchronize_session=False)
Same, but work with only not composite primary key
DBSession.sacrud(Users).read((5, 10))   # as list
DBSession.sacrud(Users).read(5, "1", 2) # as *args
DBSession.sacrud(Users).read(42)        # single

You can pass JSON data:

JSON primary keys in READ action
# Composite primary_key
DBSession.sacrud(User2Groups).read({'user_id': 4, 'group_id': 2})
primary_keys =[
   {'user_id': 4, 'group_id': 2},
   {'user_id': 4, 'group_id': 3},
   {'user_id': 1, 'group_id': 1},
   {'user_id': 19, 'group_id': 2}
]
rows = DBSession.sacrud(User2Groups).read(*primary_keys)

For more details see:

UPDATE action

UPDATE action
DBSession.sacrud(Users).update(1, {'name': 'Petya'})
DBSession.sacrud(Users).update('1', {'name': 'Petya'})
DBSession.sacrud(User2Groups).update({'user_id': 4, 'group_id': 2},
                                     {'group_id': 1})
UPDATE action with JSON data
DBSession.sacrud(Users).update(1, '{"name": "Petya"}')
DBSession.sacrud(User2Groups).update(
   '{"user_id": 4, "group_id": 2}',
   '{"group_id": 1}'
)

For more details see:

DELETE action

DELETE action
DBSession.sacrud(Users).delete(1)
DBSession.sacrud(Users).delete('1')
DBSession.sacrud(User2Groups).delete({'user_id': 4, 'group_id': 2})
DELETE action with JSON composit key
DBSession.sacrud(User2Groups).delete('{"user_id": 4, "group_id": 2}')

For more details see:

  Read the Docs
v: latest  
Versions
latest
stable
master
Free document hosting provided by Read the Docs.