Skip to main content

A framework-independent wrapper for SQLAlchemy that makes it really easy to set up.

Project description

SQLA-wrapper Build Status Coverage Status

A friendly wrapper for SQLAlchemy.

Why?

SQLAlchemy is great, but can be difficult to set up. With SQLA-Wrapper you can quickly start like:

from sqla_wrapper import SQLAlchemy

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

class User(db.Model):
    __tablename__ "users"
    id = db.Column(db.Integer, primary_key=True)
    ...

db.create_all()
todos = db.query(User.id, User.title).all()

instead of having to write something like:

# Who's going to remember all of this?
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, Column, Integer

engine = create_engine('sqlite:///:memory:')
Session = sessionmaker(bind=engine)
session = Session()
Model = declarative_base()

class User(Model):
    __tablename__ "users"
    id = Column(Integer, primary_key=True)
    ...

Model.metadata.create_all(engine)
session = Session()
todos = session.query(User).all()

Installation

Install the package using Pypi:

python -m pip install sqla-wrapper

Basic usage

from sqla_wrapper import SQLAlchemy

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

class User(db.Model):
    __tablename__ "users"
    id = db.Column(db.Integer, primary_key=True)
    ...

db.create_all()

db.add(User(...))
db.commit()

todos = db.query(User).all()

Compared to SQLAlchemy

Compared to plain SQLAlchemy, you need to know that:

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. This model has a few utility methods:
class Model(Object):
    @classmethod
    def exists(cls, **attrs):
        """Returns whether an object with these attributes exists."""

    @classmethod
    def create(cls, **attrs):
        """Create and persist a new record for the model."""

    @classmethod
    def create_or_first(cls, **attrs):
        """Tries to create a new record, and if it fails
        because already exists, return the first it founds."""

    @classmethod
    def first(cls, **attrs):
        """Returns the first object found with these attributes."""

    def save(self):
        """Saves the updated model to the current entity db and commits."""

    def delete(self):
        """Removes the model from the current session and commits."""

This model class also generates a default repr for your models, based on their class names an primary keys.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sqla-wrapper-4.200628.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sqla_wrapper-4.200628-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file sqla-wrapper-4.200628.tar.gz.

File metadata

  • Download URL: sqla-wrapper-4.200628.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.0

File hashes

Hashes for sqla-wrapper-4.200628.tar.gz
Algorithm Hash digest
SHA256 e908fcfcefc79ccebb67972baa0b1069dcb67e34db0eca2f7d354ad605667f54
MD5 cc26771b3a4c4fd572cce493fbecae8c
BLAKE2b-256 dc4397b948717b89df0a6452265108d48898084aa6b85cfedef7f2e5f9d72d81

See more details on using hashes here.

File details

Details for the file sqla_wrapper-4.200628-py3-none-any.whl.

File metadata

  • Download URL: sqla_wrapper-4.200628-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.0

File hashes

Hashes for sqla_wrapper-4.200628-py3-none-any.whl
Algorithm Hash digest
SHA256 053a61c6abdd22446913ff28ed7edabe5ce18f88a38cb6f1b19e6c91a96e42f6
MD5 ccb2e0367253dbe3b3e81c8b62896445
BLAKE2b-256 488b61aff284b49308355fb9ddd1651e4173146b496a3f7a0bd1ebc65e43fb79

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page