Paginate raw sql queries using LIMIT and OFFSET. It also supports ORDER BY queries with direction
Python Batchfile

Build Status PyPi downloads


Paginate raw sql queries using LIMIT and OFFSET

It will also supports ORDER BY queries


To install from pypi

pip install django-sqlpaginator

To get the latest (and possibly non stable version) from git

pip install git+git://

You also need to install sqlparser

pip install git+git://



Thats it !!


Pretty much same as django.core.pagination.Paginator

If you have the following models

    class Album(models.Model):
         albumid = models.IntegerField(primary_key=True, db_column=u'AlbumId')
         title = models.TextField(db_column=u'Title') 
         artistid = models.IntegerField(db_column=u'ArtistId')

    class Artist(models.Model):
         artistid = models.IntegerField(primary_key=True, db_column=u'ArtistId')
         name = models.TextField(db_column=u'Name', blank=True) 

and you want to paginate on Albums, then inside a view;

    from sqlpaginator.paginator import SqlPaginator
    from models import Album

    def get_albums(request, page=1):
        sql = "select * from %s" % Album._meta.db_table
        paginator = SqlPaginator(sql, Album, page=page, order_by='title')

            albums =
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            albums =
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page of results.
            albums =

        return render_to_response('albums_list.html', {'albums': albums})

In the template albums_list.html

    {% for album in albums %}
        {# Each "album" is a Album model object. #}
        {{ album.title|upper }}<br />
    {% endfor %}

    <div class="pagination">
        <span class="step-links">
            {% if albums.has_previous %}
                <a href="?page={{ albums.previous_page_number }}">previous</a>
            {% endif %}

            <span class="current">
                Page {{ albums.number }} of {{ albums.paginator.num_pages }}.

            {% if albums.has_next %}
                <a href="?page={{ albums.next_page_number }}">next</a>
            {% endif %}


  • Clone repo
  • Change code
  • Add tests
  • Run the tests nosetests -s --with-coverage --cover-package=sqlpaginator
  • Submit pull request