Um sistema robusto para automatizar a construção e execução de queries SQL em diferentes bancos de dados, com suporte especial para sistemas legados. O projeto utiliza Python (Flask/SQLAlchemy) no backend e Go no frontend.
- Suporte multi-database (MySQL, PostgreSQL, Oracle, SQL Server)
- Construção dinâmica de queries com múltiplos JOINs
- Pool de conexões para melhor performance
- Tratamento robusto de erros
- Logging configurável
- Validação de dados via dataclasses
- Suporte a queries complexas (WHERE, GROUP BY, ORDER BY, LIMIT)
- Interface tipo-segura para configuração de queries
- Timeout configurável para requisições
- Tratamento elegante de erros
- Formatação automática dos resultados
- Python 3.8+
- Flask
- SQLAlchemy
- Drivers de banco de dados específicos:
- MySQL:
pymysql
- PostgreSQL:
psycopg2-binary
- Oracle:
cx-oracle
- SQL Server:
pyodbc
- MySQL:
- Go 1.20+
- Sem dependências externas além da biblioteca padrão
- Clone o repositório:
git clone https://github.com/bulletdev/sql-query-builder.git
cd sql-query-builder
- Configure o ambiente virtual Python e instale as dependências:
cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
No Windows:
cd backend
python -m venv venv
source venv\Scripts\activate
pip install -r requirements.txt
- Configure o ambiente Go:
cd ../frontend
go mod tidy
- Copie o arquivo de configuração de exemplo:
cp backend/config.yml.example backend/config.yml
- Edite
config.yml
com suas configurações de banco de dados:
databases:
mysql:
host: localhost
port: 3306
pool_size: 5
timeout: 30
oracle:
host: localhost
port: 1521
pool_size: 5
timeout: 30
- Inicie o backend:
cd backend
python src/app.py
- Em outro terminal, execute o frontend:
cd frontend
go run cmd/main.go
config := QueryConfig{
DbType: "mysql",
MainTable: "TGFCAB",
Columns: []string{"TGFCAB.NUNOTA", "TGFPAR.NOMEPARC"},
Joins: []JoinCondition{
{
Table: "TGFPAR",
LeftColumn: "CODPARC",
RightColumn: "CODPARC",
JoinType: "left",
},
},
}
query_config = QueryConfig(
db_type="oracle",
main_table="TGFCAB",
columns=["NUNOTA", "DTNEG"],
conditions=[{"expression": "DTNEG >= '2024-01-01'"}],
order_by=["DTNEG DESC"],
limit=100
)
- Faça um Fork do projeto
- Crie sua Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature'
) - Push para a Branch (
git push origin feature/AmazingFeature
) - Abra um Pull Request
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.