readsql
Convierte SQL al formato más legible para humanos. Por el momento pone en mayúsculas las palabras clave de SQL, podría embellecer o incluso sugerir mejoras en el código SQL en el futuro. Convierte código SQL e incluso cadenas SQL en lenguajes de programación (solo Python por ahora).
Así que si escribimos
select sushi, avg(price) from tokyo where ocean = 'pacific' group by sushireadsql nos ayudará a leerlo como
SELECT sushi, AVG(price) FROM tokyo WHERE ocean = 'pacific' GROUP BY sushiInstalación
pip install readsql
Requiere Python 3.8+.Uso
- Formatear código SQL proporcionado en la línea de comandos
readsql-s - Formatear un archivo o carpeta SQL
- como en una carpeta, buscará archivos que terminen con .sql o .py
readsql
1.
readsql -s
- En archivos de Python busca cadenas de variables
queryy las formatea
readsql
Podemos buscar diferentes cadenas en archivos Python con argumentos -pyreadsql -py Nota: readsql utiliza el analizador AST de Python, por lo que soporta:
- Hints de tipo: query: str = "..."
- F-strings: f"SELECT * FROM {table}"
- Ámbitos anidados: Maneja robustamente variables dentro de funciones y clases.
- Comentarios/Docstrings: Ignora correctamente texto tipo SQL en comentarios o docstrings.
Ejemplos de uso
- El comando
readsql 'select sushi from tokyo' -sdevuelve SELECT sushi FROM tokyo- a. El comando
readsql sql_example.sql, mientras quesql_example.sqles un archivo SQL con el código siguiente,
select max(height), avg(mass), min(age) from jungle group by forest where animal=elephant;
reemplaza el archivo con este código
SELECT MAX(height), AVG(mass), MIN(age) FROM jungle GROUP BY forest WHERE animal=elephant;
- b. Comando
readsql sql_in_python_variable_example.py, mientras quesql_in_python_variable_example.pyes un archivo Python con el código siguiente,
def get_query():
limit = 6
query = f"SELEct speed from world where animal='dolphin' limit {limit}"
return query
reemplaza el archivo con este código
def get_query():
limit = 6
query = f"SELECT speed FROM world WHERE animal='dolphin' LIMIT {limit}"
return query
- c. Comando
readsql sql_in_python_variable_example.py -py sql, mientras quesql_in_python_variable_example.pyes un archivo Python con el código como se muestra a continuación,
def get_query():
limit = 6
sql = f"SELEct speed from world where animal='dolphin' limit {limit}"
return sql
reemplaza el archivo con este código
def get_query():
limit = 6
sql = f"SELECT speed FROM world WHERE animal='dolphin' LIMIT {limit}"
return sql- d. El comando
readsql tests -nmuestra todo el código SQL formateado en la carpetatests, los archivos no son reemplazados por la versión formateada (el argumento-nsignifica no reemplazar)
/testsAñadir un hook pre-commit
¿Cómo añadir un hook pre-commit de readsql?repos:
- repo: https://github.com/AzisK/readsql
rev: v1.0.0 # Replace by any tag/version: https://github.com/azisk/readsql/tags
hooks:
- id: readsql
Desarrollo
Clona el repositorio y usa uv para el desarrollo:
uv sync --all-extras # Install dependencies
uv run readsql "select sushi from tokyo" -s # Format a string
uv run readsql tests/sql_example.sql # Format SQL file
uv run readsql tests/sql_in_python_example.py # Format SQL in Python
uv run readsql tests/sql_in_python_variable_example.py -py sql # Custom variable
uv run readsql tests # Format all files in folderPruebas
uv run pytest -v--- Tranlated By Open Ai Tx | Last indexed: 2026-05-30 ---