A friendly wrapper for SQLAlchemy
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.travis.yml Fix Travis-CI config Feb 12, 2019
AUTHORS Update version to 1.6.0, AUTHORS and license-related files Nov 20, 2015
pyproject.toml v2.0.1 Feb 17, 2019
tox.ini Version 2.0 Feb 12, 2019


SQLA-wrapper Build Status

A friendly wrapper for SQLAlchemy.

from sqla_wrapper import SQLAlchemy

db = SQLAlchemy('sqlite:///:memory:')

class ToDo(db.Model):
    id = db.Column(db.Integer, primary_key=True)



# Sorry, we don't support the `Model.query` syntax
todos = db.query(ToDo).all()

Read the complete documentation here: https://jpscaletti.com/sqla-wrapper

Since 2.0, only Python 3.6 or later are supported. Please use the 1.9.1 version if your project runs on a previous Python version.


The things you need to know compared to plain SQLAlchemy are:

  1. The SQLAlchemy gives you access to the following things:
    • All the functions and classes from sqlalchemy and sqlalchemy.orm
    • All the functions from a preconfigured scoped session (called _session).
    • The ~SQLAlchemy.metadata and ~SQLAlchemy.engine
    • The methods SQLAlchemy.create_all and SQLAlchemy.drop_all to create and drop tables according to the models.
    • a Model baseclass that is a configured declarative base.
  2. All the functions from the session are available directly in the class, so you can do db.add, db.commit, db.remove, etc.
  3. The Model declarative base class behaves like a regular Python class but has a query attribute attached that can be used to query the model.
  4. The Model class also auto generates _tablename__ attributes, if you don't define one, based on the underscored and pluralized name of your classes.
  5. You have to commit the session and configure your app to remove it at the end of the request.

Run the tests

You'll need poetry to install de development dependencies.

poetry install

This command will automnatically create a virtual environment to run the project in. Read more in the Poetry site

To run the tests in your current Python version do:

pytest tests

To run them in every supported Python version do:


It's also neccesary to run the coverage report to make sure all lines of code are touch by the tests:

make coverage

Our test suite runs continuously on Travis CI with every update.

copyright:2013-2019 by Juan-Pablo Scaletti.
license:MIT, see LICENSE for more details.