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.txtNo 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.ymlcom 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.goconfig := 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.