Skip to main content

Database manager for quick integration of Botcity RPA + Pandas Dataframes + SQLAlchemy for simple data persistance.

Project description

🇧🇷 DatabaseManager (pt-BR)

📘 Leia esse documento em outros idiomas:
🇺🇸 English Version

PyPI version License: MIT

DatabaseManager é uma biblioteca utilitária para manipulação de bancos de dados e DataFrames de forma simples e integrada, construída sobre SQLAlchemy e pandas.

Ela fornece uma interface unificada para:

  • Gerenciar conexões de banco de dados e tabelas ORM.
  • Inserir dados de forma individual, em massa ou diretamente a partir de DataFrames.
  • Executar consultas SQL simples.
  • Manipular e padronizar DataFrames de maneira prática.

🚀 Instalação

pip install rpa-db-manager

Dependências:


⚡ Exemplo rápido

import pandas as pd
from sqlalchemy.orm import declarative_base, Mapped, mapped_column
from sqlalchemy import Integer, String
from db_manager import DatabaseManager, DataframeHandler

# Define base ORM
Base = declarative_base()

class User(Base):
    __tablename__ = "users"
    id: Mapped[int] = mapped_column(Integer, primary_key=True)
    name: Mapped[str] = mapped_column(String(100))
    age: Mapped[int] = mapped_column(Integer)

# --- Gerenciamento de banco de dados ---
db_url = "sqlite:///example.db"
db = DatabaseManager(db_url, Base)

# Inserção individual
new_user = User(name="Alice", age=30)
db.insert_data(new_user)

# Inserção em massa via DataFrame
df = pd.DataFrame([
    {"name": "Bob", "age": 25},
    {"name": "Carol", "age": 40},
])
db.bulk_insert_dataframe(df, User)

# Inserção direta com pandas.to_sql()
df2 = pd.DataFrame([
    {"id": 3, "name": "Daniel", "age": 35}
])
db.to_sql_dataframe(df2, "users", if_exists="append")

# Consulta
users = db.select_all(User)
print(users)

# --- Manipulação de DataFrames ---
handler = DataframeHandler()

# Normaliza nomes de colunas
df = pd.DataFrame({" First Name ": ["Ana"], "Last Name": ["Souza"]})
df = handler.normalize_column_names(df)
print(df.columns)  # ['first_name', 'last_name']

# Cria uma coluna de chave única
df = handler.create_unique_key_column(df, ["first_name", "last_name"])
print(df)

🛠️ Classes e Métodos

🧩 DatabaseManager

Classe para gerenciamento e manipulação de bancos de dados via SQLAlchemy.

Métodos principais

Método Descrição
insert_data(model_instance) Insere uma instância ORM no banco de dados.
bulk_insert_dataframe(df, model_cls) Insere um DataFrame inteiro via bulk_insert_mappings.
to_sql_dataframe(df, table_name, if_exists="append") Insere DataFrame diretamente via pandas.to_sql().
select_all(model) Retorna todos os registros da tabela como lista de dicionários.

🧮 DataframeHandler

Classe auxiliar para manipulação e padronização de DataFrames.

Métodos principais

Método Descrição
normalize_column_names(df) Remove espaços, converte nomes de colunas para minúsculas e substitui espaços por _.
create_unique_key_column(df, key_columns, new_column_name="unique_key") Cria uma nova coluna concatenando os valores de outras colunas (útil para gerar chaves únicas).

📂 Estrutura mínima do projeto

src/
 └── database_manager/
      ├── __init__.py
      ├── db_manager.py
      └── dataframe_handler.py

📘 Roadmap

  • Adicionar suporte assíncrono (AsyncSession com SQLAlchemy async).
  • Adicionar validações automáticas de schema.
  • Criar integração com bancos NoSQL (ex.: MongoDB, DuckDB).

📜 Licença

Distribuído sob a licença MIT. Veja LICENSE para mais informações.

🇺🇸 DatabaseManager (EN)

📘 Read this document in other languages:
🇧🇷 Versão em Português (pt-BR)

PyPI version License: MIT

DatabaseManager is a utility library for simple and integrated management of databases and DataFrames, built on top of SQLAlchemy and pandas.

It provides a unified interface to:

  • Manage database connections and ORM models.
  • Insert data individually, in bulk, or directly from DataFrames.
  • Execute simple SQL queries.
  • Manipulate and standardize DataFrames easily.

🚀 Installation

pip install rpa-db-manager

Dependencies:


⚡ Quick Example

import pandas as pd
from sqlalchemy.orm import declarative_base, Mapped, mapped_column
from sqlalchemy import Integer, String
from db_manager import DatabaseManager, DataframeHandler

# Define ORM base
Base = declarative_base()

class User(Base):
    __tablename__ = "users"
    id: Mapped[int] = mapped_column(Integer, primary_key=True)
    name: Mapped[str] = mapped_column(String(100))
    age: Mapped[int] = mapped_column(Integer)

# --- Database management ---
db_url = "sqlite:///example.db"
db = DatabaseManager(db_url, Base)

# Single insert
new_user = User(name="Alice", age=30)
db.insert_data(new_user)

# Bulk insert using DataFrame
df = pd.DataFrame([
    {"name": "Bob", "age": 25},
    {"name": "Carol", "age": 40},
])
db.bulk_insert_dataframe(df, User)

# Direct insert using pandas.to_sql()
df2 = pd.DataFrame([
    {"id": 3, "name": "Daniel", "age": 35}
])
db.to_sql_dataframe(df2, "users", if_exists="append")

# Query
users = db.select_all(User)
print(users)

# --- DataFrame handling ---
handler = DataframeHandler()

# Normalize column names
df = pd.DataFrame({" First Name ": ["Ana"], "Last Name": ["Souza"]})
df = handler.normalize_column_names(df)
print(df.columns)  # ['first_name', 'last_name']

# Create a unique key column
df = handler.create_unique_key_column(df, ["first_name", "last_name"])
print(df)

🛠️ Classes and Methods

🧩 DatabaseManager

Class for managing and interacting with databases using SQLAlchemy.

Main Methods

Method Description
insert_data(model_instance) Inserts an ORM instance into the database.
bulk_insert_dataframe(df, model_cls) Inserts an entire DataFrame via bulk_insert_mappings.
to_sql_dataframe(df, table_name, if_exists="append") Inserts a DataFrame directly using pandas.to_sql().
select_all(model) Returns all table rows as a list of dictionaries.

🧮 DataframeHandler

Helper class for manipulating and standardizing DataFrames.

Main Methods

Method Description
normalize_column_names(df) Removes spaces, converts column names to lowercase, and replaces spaces with underscores.
create_unique_key_column(df, key_columns, new_column_name="unique_key") Creates a new column concatenating the values of other columns (useful for generating unique keys).

📂 Minimal Project Structure

src/
 └── database_manager/
      ├── __init__.py
      ├── db_manager.py
      └── dataframe_handler.py

📘 Roadmap

  • Add asynchronous support (AsyncSession with SQLAlchemy async).
  • Add automatic schema validation.
  • Create integration with NoSQL databases (e.g., MongoDB, DuckDB).

📜 License

Distributed under the MIT License. See LICENSE for more information.

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

rpa_db_manager-0.1.0.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

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

rpa_db_manager-0.1.0-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file rpa_db_manager-0.1.0.tar.gz.

File metadata

  • Download URL: rpa_db_manager-0.1.0.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for rpa_db_manager-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b0f3414807aeaff5252ca14df2497cdcb17ce1514ea3a275b8f7b4d82a720655
MD5 e8113492f29f2d1b80340ddb21911989
BLAKE2b-256 cd4b854e2e0907d3160be550d5e821cb2a210dd31e80769efe92cebe46991fee

See more details on using hashes here.

File details

Details for the file rpa_db_manager-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: rpa_db_manager-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for rpa_db_manager-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5a36f05bbf030b35d9af8c428848f8fcfde988505c7341e4977b5aa5c9c00087
MD5 9e03aa578934e00c7d134dda82579c1d
BLAKE2b-256 6ad4e15fb0a07435def01c295797b8cb81804d16aff9597f84c8297543c13fc9

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