A framework-independent wrapper for SQLAlchemy that makes it really easy to set up.
Project description
SQLA-wrapper
A friendly wrapper for SQLAlchemy.
Docs: https://jpscaletti.com/sqla-wrapper
Why?
SQLAlchemy is great 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):
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):
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):
id = db.Column(db.Integer, primary_key=True)
...
db.create_all()
db.add(User(...))
db.commit()
todos = db.query(User).all()
NOTE: The Model.query()
syntax of Flask-SQLAlchemy is a bad practice and thus is NOT supported. Use db.query(Model)
instead..
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
andsqlalchemy.orm
- All the functions from a preconfigured scoped session (called
_session
). - The
~SQLAlchemy.metadata
and~SQLAlchemy.engine
- The methods
SQLAlchemy.create_all
andSQLAlchemy.drop_all
to create and drop tables according to the models. - a
Model
baseclass that is a configured declarative base.
- All the functions and classes from
- All the functions from the session are available directly in the
class, so you can do
db.add
,db.commit
,db.remove
, etc. - The
Model
declarative base class behaves like a regular Python class but has aquery
attribute attached that can be used to query the model. - The
Model
class also auto generates_tablename__
attributes, if you don't define one, based on the underscored and pluralized name of your classes. - You have to commit the session and configure your app to remove it at the end of the request.
Project details
Release history Release notifications | RSS feed
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-3.0.0.tar.gz
(12.9 kB
view hashes)
Built Distribution
Close
Hashes for sqla_wrapper-3.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0fa844b1a1e43b0749d0688a0a71b52284d52ab21c1a900c813d9f6413a04a10 |
|
MD5 | 945962a15d73e8a42d70fd3590b570fb |
|
BLAKE2b-256 | a4c7d0bc59f27d4a7fcb322ad249f22767d330628258057f0a8efcbd5131e6bf |