Socket
Socket
Sign inDemoInstall

banana-manager

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

banana-manager

Ready-to-go web app for end-users to interact with tables in a database.


Maintainers
1

🍌 Banana Manager

Welcome to Banana Manager! Banana Manager is a Python package designed to connect to a database and create a simple web app that displays and allows updates to selected tables. This tool is perfect for non-technical end-users who need to interact with database tables without using complex DBA tools.

Powered by

  • Dash and AG Grid: User-friendly, intuitive, and interactive web interface with powerful table displays and editing capabilities.
  • Pydantic and YAML: Fast and accurate data handling and configuration.
  • SQLAlchemy: Secure, efficient, and flexible database operations for multiple database backends.

Installation

To install Banana Manager, simply use pip:

pip install banana-manager

Also, remember to install the appropriate database connector for your project, like pyodbc or psycopg2. If you’re unsure, SQLAlchemy will inform you when you load your application.

Additionally, consider installing a production server like waitress:

pip install waitress

Getting started

At the end of this tutorial, you’ll have a folder structure similar to the following:

my_manager
    └─ app.py
    └─ config.yaml
    └─ my_tables
            └─ my_group_of_tables.yaml
            └─ another_group_of_tables.yaml

Configuring the Manager

Create a config.yaml file in the root folder of your project with the following structure:

connection:
  drivername: <optional str>
  username: <optional str>
  password: <optional str>
  host: <optional str>
  port: <optional str>
  database: <optional str>
data_path: "data"
table_paths: ["tables"]
title: "Banana Database Manager"
theme: <optional str>
grid_options: <optional dict>
  • connection (dict) : This will create a SQLAlchemy URL object. See the section Dialets for more information about the appropriate driver.
  • data_path (str, default="data") : The folder where the app data files will be stored.
  • table_paths (list[str], default=["tables"]) : List of folder where the table models YAML files are stored.
  • title (str, default="Banana Database Manager") : HTML header title attribute.
  • theme (str, default="cyan") : One of the default Mantine colors.
  • grid_options (dict[str, str]) : Check AG Grid Options documentation.

Defining the tables

The tables can be defined using YAML files located in the folders specified in the config.yaml. If no folder is specified, create a new folder named "tables" in the root folder.

Each YAML file represents a group containing a list of tables. Here’s the structure:

group_name: <optional string>
display_order: <optional integer>
tables:
  - name: <string>
    schema_name: <optional string>
    display_name: <optional string>
    primary_key:
      name: <string>
      display_name: <optional string>
      hide: <optional boolean>
    columns:
      - name: <string>
        display_name: <optional string>
        foreign_key: (optional)
          table_name: <string>
          schema_name: <optional string>
          column_name: <string>
          column_display: <string>
      - <other columns>
    order_by: (optional)
      - column: <string>
        desc: <optional bool>
      - <other columns>
    limit: <optional int>

  - <other tables>
Group configuration
  • group_name (str, optional) : Name of the group that will be displayed in the side menu.
  • display_order (int, optional) : Order which the groups will be stacked in the side menu.
  • tables (list) : List of table configurations.
Table configuration
  • name (str) : Name of the table in the database.
  • schema_name (str, optional) : Schema where the table is located in the database.
  • display_name : (str, optional) : Name that will be displayed at the side menu.
  • primary_key (dict) : Primary key configuration.
  • columns (list) : List of column configurations.
  • order_by (list[dict]) : Default ordering of the table rows.
  • limit (int) : Maximum of rows returned after order by.
Primary key configuration
  • name (str) : Name of the column in the database that will be used as primary key.
  • display_name (str, optional) : Name that will be displayed in the table.
  • hide (bool, optional) : Hide primary key column.
Order by configuration
  • column (str) : Name of the column
  • desc (bool, optional) : If True, order table by column in descending order.
Column configuration
  • name (str) : Name of the column in the database.
  • display_name (str, optional) : Name that will be displayed in the table.
  • foreign_key (dict, optional) : Foreign key configuration.
Foreign key configuration
  • table_name (str) : Name of the foreign table in the database.
  • schema_name (str, optional) : Schema where the foreign table is located in the database.
  • column_name (str) : Name of the referenced column in the database.
  • column_display (str) : Values that will be displayed in the app.

Load the application

Create an app.py file in the root folder:

from banana import Banana

app = Banana()
MY_PORT = 4000 

if __name__ == "__main__":
    app.run_server(port=MY_PORT)

This will load a development server in the selected port. Consider running a production server with waitress:

from banana import Banana
from waitress import serve

app = Banana()
MY_PORT = 4000

if __name__ == "__main__":
    serve(app.server, port=MY_PORT)

Roadmap

VersionDescriptionRelease date
v0.1Load table and update cellsFirst half of July 2024
v0.2Table groupsSecond half of July 2024
v0.3Logging and configurationsFirst half of August 2024
v0.4Insert rows and color themesSecond half of August 2024
v0.5Delete rows and historySeptember 2024
v0.6User authenticationOctober 2024
v0.7Special data typesNovember 2024
v0.8Advanced user authorizationFirst quarter of 2025

License

Banana Manager is released under the MIT License. See the LICENSE file for more details.

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc