License Supported versions https://readthedocs.org/projects/groundwork-database/badge/?version=latest Travis-CI Build Status https://coveralls.io/repos/github/useblocks/groundwork-database/badge.svg?branch=master Code quality PyPI Package latest release

Welcome to groundwork-database

groundwork-database provides database management functions to applications based on the framework groundwork.

It provides a pattern for sql database support and a small console plugin to inspect those databases.

The main features are:

  • Support of multiple database connections
  • Support of various SQL based database like:

Note

groundwork-database is based on SQLAlchemy. All functions from SQLAlchemy are available inside groundwork plugins, which are using groundwork-database as pattern.

Quickstart

To use groundwork-database inside a groundwork plugin, simply integrate it as followed:

from groundwork import App
from groundwork_database.patterns import GwSqlPattern

class MyPlugin(GwSqlPattern):
    def _init_(self, app, *args, **kwargs):
        self.name = "My Plugin"
        super().__init__(app, *args, **kwargs)

    def activate(self):
        name = "my_db"
        database_url = "sqlite:///:memory:"
        description = "My personal test database"
        db = self.databases.register(name, database_url, description)

        User = _get_user_class(db.Base)
        my_user = User(name="Me")
        db.add(my_user)
        db.commit()

    def print_user(name):
        db = self.databases.get("my_db")
        user = db.query(User).filter_by(name=name).first()
        if user is not None:
            print(user.name)
        else:
            print("User %s not found." % name)

    def _get_user_class(base):
        class User(base):
            id = Column(Integer, primary_key=True)
            name = Column(String)
        return User


if __name__ == "__main__":
    my_app = App()
    my_plugin = MyPlugin(my_app)
    my_plugin.activate()
    my_plugin.print_user("me")