Files
deb-python-sqlalchemy-utils/docs/index.rst
2013-04-03 13:01:45 +03:00

2.3 KiB

SQLAlchemy-Utils

SQLAlchemy-Utils provides various utility classes and functions for SQLAlchemy.

ScalarList

ScalarList type provides convenient way for saving multiple scalar values in one column. ScalarList works like list on python side and saves the result as comma-separated list in the database (custom separators can also be used).

Example :

from sqlalchemy_utils import ScalarList


class User(Base):
    __tablename__ = 'user'
    id = db.Column(db.Integer, autoincrement=True)
    hobbies = db.Column(ScalarList())


user = User()
user.hobbies = [u'football', u'ice_hockey']
session.commit()

You can easily set up integer lists too:

:

from sqlalchemy_utils import ScalarList


class Player(Base):
    __tablename__ = 'player'
    id = db.Column(db.Integer, autoincrement=True)
    points = db.Column(ScalarList(int))


player = Player()
player.points = [11, 12, 8, 80]
session.commit()

NumberRange

NumberRangeType provides way for saving range of numbers into database.

Example :

from sqlalchemy_utils import NumberRangeType, NumberRange


class Event(Base):
    __tablename__ = 'user'
    id = db.Column(db.Integer, autoincrement=True)
    name = db.Column(db.Unicode(255))
    estimated_number_of_persons = db.Column(NumberRangeType)


party = Event(name=u'party')

# we estimate the party to contain minium of 10 persons and at max
# 100 persons
party.estimated_number_of_persons = NumberRange(10, 100)

print party.estimated_number_of_persons
# '10-100'

NumberRange supports some arithmetic operators: :

meeting = Event(name=u'meeting')

meeting.estimated_number_of_persons = NumberRange(20, 40)

total = (
    meeting.estimated_number_of_persons +
    party.estimated_number_of_persons
)
print total
# '30-140'

API Documentation

sqlalchemy_utils

InstrumentedList

sort_query

escape_like

License