Using lifter consists only of a few steps.

Creating a model

This model will represent the data you are querying:

import lifter.models

class User(lifter.models.Model):

Creating a data store

In this example, we’ll assume the data you want to query is available in the python process, as an iterable. Therefore, we use the Python store:

from lifter.backends.python import IterableStore

data = [
        'age': 27,
        'is_active': False,
        'email': 'kurt@cobain.music',
        'age': 687,
        'is_active': True,
        'email': 'legolas@deepforest.org',
        'age': 34,
        'is_active': False,
        'email': 'golgoth@lahorde.org',

store = IterableStore(data)

In this step, we made our data available in lifter, so it can be queried later.

Creating a manager

Creating a manager is the next step:

manager = store.query(User)

With the previous line, we told lifter that our store will return User instances.

Your first query

Enough set up, let’s run your first query:

young_users = manager.filter(User.age < 30)

The previous query will return a queryset containing all users matching age < 30.

You could then iterate over those results and use them in your application:

for user in young_users:
    print('Hello {0}!'.format(user['email']))

More complex queries

Of course, we just scratched the surface here. More complex and useful methods are available in lifter:

# get the total number of inactive users
total_inactive = manager.filter(User.is_active == False).count()

# get only legolas' data
legolas = manager.get(User.email == 'legolas@deepforest.org')

# get a list containing all users emails
emails_list = manager.all().values_list('email', flat=True)

# get total and average age of our users
from lifter import aggregates

>>> {'age__avg': 249.33, 'age__sum': 748}

If you’re interested, head over Query API!