Skip to main content

Bases and Mixins to store functions for later execution

Project description

SQLAlchemy-Function defines a SQLALchemy Mixin for creating Function models.

A Function model has a parent (optional), a function, arguments, and keyword arguments. When called, the Function model executes its function, passing in its parent (if applicable), its arguments, and its keyword arguments.

Installation

$ pip install sqlalchemy-function

Quickstart

In the setup, we create a SQLAlchemy session, define a Parent model subclassing FunctionRelator, and a Function model subclassing FunctionMixin.

from sqlalchemy_function import FunctionMixin, FunctionRelator

from sqlalchemy import create_engine, Column, ForeignKey, Integer
from sqlalchemy.orm import relationship, sessionmaker, scoped_session
from sqlalchemy.ext.declarative import declarative_base

# standard session creation
engine = create_engine('sqlite:///:memory:')
session_factory = sessionmaker(bind=engine)
Session = scoped_session(session_factory)
session = Session()
Base = declarative_base()

# define a Function model parent
class Parent(FunctionRelator, Base):
    __tablename__ = 'parent'
    id = Column(Integer, primary_key=True)

    # Fuction models must reference their parent with a `parent` attribute
    functions = relationship('Function', backref='parent')

# define a Function model with the FunctionMixin
class Function(FunctionMixin, Base):
    __tablename__ = 'function'
    id = Column(Integer, primary_key=True)
    parent_id = Column(Integer, ForeignKey('parent.id'))

Base.metadata.create_all(engine)

We can now register, store, and call functions as follows.

@Function.register
def foo(parent, *args, **kwargs):
    print('My parent is', parent)
    print('My args are', args)
    print('My kwargs are', kwargs)
    return 'return value'

parent = Parent()
Function.foo(parent, 'hello world', goodbye='moon')
parent.functions[0]()

Out:

My parent is <__main__.Parent object at 0x7f8b4d200518>
My args are ('hello world',)
My kwargs are {'goodbye': 'moon'}
'return value'

Citation

@software{bowen2020sqlalchemy-function,
  author = {Dillon Bowen},
  title = {SQLAlchemy-Function},
  url = {https://dsbowen.github.io/sqlalchemy-function/},
  date = {2020-06-05},
}

License

Users must cite this package in any publications which use it.

It is licensed with the MIT License.

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

sqlalchemy-function-0.0.9.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

sqlalchemy_function-0.0.9-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file sqlalchemy-function-0.0.9.tar.gz.

File metadata

  • Download URL: sqlalchemy-function-0.0.9.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.6.8

File hashes

Hashes for sqlalchemy-function-0.0.9.tar.gz
Algorithm Hash digest
SHA256 50637b8a471b8841c574bf1c56816b727e70246805c7307bcd372dd1e1833518
MD5 128b1f92aedfa61c7d931bc27187d045
BLAKE2b-256 486b481f748fcd62b437bc71a8e4cd93460b019074685ae4d0450b7e015f751a

See more details on using hashes here.

File details

Details for the file sqlalchemy_function-0.0.9-py3-none-any.whl.

File metadata

  • Download URL: sqlalchemy_function-0.0.9-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.6.8

File hashes

Hashes for sqlalchemy_function-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 205ae671d16146de6d53b99c0325cfe05fa4bee7ae00153d0a711ecef099b64f
MD5 99887ad475522153599fc59f3a541027
BLAKE2b-256 8701bae7db608bab520acdb0d6ec86ad978f3aece1bca28d00986a15767b134d

See more details on using hashes here.

Supported by

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