msempere / porm

Python Redis ORM

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Logo

Python Redis ORM Build Status Requirements Status

Setup:

pip install -r requirements.txt
python setup.py install

Usage example

>>> from porm.model import Model
>>> from porm.validators import StringValidator, RegexValidator, EmailValidator, NumberValidator, LengthValidator
>>> from porm.fields import StringField

>>> class User(Model):
>>>     name = StringField(index=True, 
>>>                         validators= [
>>>                                     StringValidator(),
>>>                                     LengthValidator(min_length=0, max_length=20)
>>>                                     RegexValidator('^P')
>>>                                    ])
                                
>>>     surname = StringField(validators=[
>>>                                     StringValidator(),
>>>                                     LengthValidator(min_length=0, max_length=20)
>>>                                     ])
                                    
>>>     age = NumberField(validators=[
>>>                                     RangeValidator(min=0, max=120)
>>>                                     ])
    
>>>     email = StringField(validators=[
>>>                                     NumberValidator(),
>>>                                     EmailValidator()
>>>                                     ])
    
>>>     ip = StringField(validators=[
>>>                                     IPAddressValidator(ipv4=True)
>>>                                     ])

>>> user = User()
>>> user.name = 'Peter'
>>> user.surname = 'Pan'
>>> user.age = 15
>>> user.email = 'peter@pan.com'
>>> user.ip = '127.0.0.1'

>>> print user
{'ip' = '127.0.0.1', 'email': 'peter@pan.com', 'age': 15, 'surname': 'Pan', 'name': 'Peter'}

>>> user.save()
True
>>> user.free()
True
>>> user.exist()
False

Saving data

>>> user = User()
>>> user.name = 'Peter'
>>> user.email = 'peter@pan.com
>>> user.save()
True

Retrieving data

>>> found_user = User.find('Peter')
>>> found_user.email.get()
'peter@pan.com'

Default values

A default value can be set if no value is supplied

>>> class User(Model):
>>>     name = StringField(index=True)
>>>     surname = StringField(default='Pan')

>>> user = User()
>>> user.name = 'Peter'
>>> user.surname.get()
'Pan'

Validators

  • StringValidator (str)
  • NumberValidator (int, float)
  • EmailValidator (str)
  • RegexValidator (str)
  • EqualToValidator (str, int, float)
  • NumberRangeValidator (int, float)
  • LenghValidator (str)
  • IPAddressValidator (str) (Support for ipv4 and ipv6)

Validation:

>>> class User(Model):
>>>     name = StringField(index=True, 
>>>                         validators= [
>>>                                     LengthValidator(min_length=0, max_length=20)
>>>                                     ])

>>> user = User()
>>> user.name = 'string_with_more_than_20_characters'
porm.validators.ValidatorException: LengthValidator could not validate 'string_with_more_than_20_characters'

About

Python Redis ORM

License:MIT License


Languages

Language:Python 100.0%