Um módulo genérico para gerenciar conexões com banco de dados
Project description
Connection DB
Uma biblioteca Python flexível e fácil de usar para gerenciar conexões com diferentes tipos de bancos de dados usando SQLAlchemy.
Características
- Suporte para múltiplos bancos de dados:
- SQL Server
- MySQL
- PostgreSQL
- MongoDB (em breve)
- Gerenciamento automático de conexões usando context manager
- Integração com SQLAlchemy ORM
- Tratamento de erros robusto
- Interface consistente para diferentes bancos de dados
Instalação
pip install connection-db
Requisitos
- Python >= 3.7
- SQLAlchemy >= 1.4.0
- Drivers específicos para cada banco de dados:
- SQL Server: pymssql >= 2.2.0
- PostgreSQL: psycopg2-binary >= 2.9.0
- MySQL: pymysql >= 1.0.0
Uso Básico
Conexão Simples
from connection_db import DBConnection
# Usando com SQL Server
with DBConnection(
sql_server=True,
connection_string="mssql+pymssql://user:password@server/database"
) as db:
db.session.execute(text("SELECT * FROM users"))
db.session.commit()
Uso com ORM
from connection_db import DBConnection
from sqlalchemy import select
from your_models import User
with DBConnection(
sql_server=True,
connection_string="mssql+pymssql://user:password@server/database",
orm_mapped=User
) as db:
query = select(db.table).where(db.table.name == "John")
result = db.session.execute(query)
db.session.commit()
Padrão Repository
from connection_db import DBConnection
class BaseRepository:
def __init__(self):
self.connection_string = "mssql+pymssql://user:password@server/database"
self.db_type = "sql_server"
def get_connection(self, orm_model=None):
return DBConnection(
connection_string=self.connection_string,
sql_server=(self.db_type == "sql_server"),
orm_mapped=orm_model
)
from connection_db import DBConnection
class Base:
def __init__(self):
self.connection_string = "mssql+pymssql://user:password@server/database" # Configure uma vez
self.db_type = "sql_server" # ou "mysql", "postgres", etc.
def get_connection(self, orm_model=None):
return DBConnection(
connection_string=self.connection_string,
sql_server=(self.db_type == "sql_server"),
orm_mapped=orm_model
)
# user_repository.py
from .base_repository import Base
from .models import User
class UserRepository(Base):
def __init__(self):
super().__init__()
def find_by_name(self, name: str):
with self.get_connection(User) as db:
query = select(db.table).where(db.table.name == name)
result = db.session.execute(query)
return result.scalars().first()
def find_all(self):
with self.get_connection(User) as db:
query = select(db.table)
result = db.session.execute(query)
return result.scalars().all()
Strings de Conexão
SQL Server
mssql+pymssql://username:password@hostname:port/database_name
mssql+pyodbc://username:password@hostname:port/database_name?driver=ODBC+Driver+17+for+SQL+Server
MySQL
mysql+pymysql://username:password@hostname:port/database_name
mysql://username:password@hostname:port/database_name
PostgreSQL
postgresql://username:password@hostname:port/database_name
postgresql+psycopg2://username:password@hostname:port/database_name
Tratamento de Erros
A biblioteca inclui classes de exceção personalizadas para melhor tratamento de erros:
DatabaseConnectionError: Erros de conexão com o bancoSessionError: Problemas com a sessão do banco
Contribuindo
Contribuições são bem-vindas! Por favor, sinta-se à vontade para submeter pull requests.
Licença
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
Autor
Miguel Tenorio
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
connection_db-0.3.0.tar.gz
(4.4 kB
view details)
File details
Details for the file connection_db-0.3.0.tar.gz.
File metadata
- Download URL: connection_db-0.3.0.tar.gz
- Upload date:
- Size: 4.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d9a3832ce89e4d921f697477c7aee3b72a8e003fbfef292723f19b51cc1af7d7
|
|
| MD5 |
4bdcf70fa51476e9c637094d92fd82cc
|
|
| BLAKE2b-256 |
c7757bdc94be9fc8d2975f193bd7749cbbae4374018c8ddb18a9c587952b84b2
|