readsql
Convertir le SQL au format le plus lisible possible. Pour l'instant, il met en majuscules les mots-clés SQL, il pourrait à l'avenir améliorer la présentation ou même suggérer des améliorations du code SQL. Il convertit le code SQL et même les chaînes SQL dans les langages de programmation (seulement Python pour le moment).
Donc si nous écrivons
select sushi, avg(price) from tokyo where ocean = 'pacific' group by sushi
readsql nous aidera à le lire comme SELECT sushi, AVG(price) FROM tokyo WHERE ocean = 'pacific' GROUP BY sushiInstallation
pip install readsqlNécessite Python 3.8+.
Utilisation
- Formater le code SQL fourni en ligne de commande
readsql-s - Formater un fichier ou un dossier SQL
- dans un dossier, il recherchera les fichiers se terminant par .sql ou .py
readsql
1.
readsql -s
- Dans les fichiers Python, il recherche les chaînes de variables
queryet les formate.
readsql
Nous pouvons rechercher différentes chaînes dans les fichiers Python avec les arguments -pyreadsql -py Remarque : readsql utilise le parseur AST de Python, il supporte donc :
- Annotations de type : query: str = "..."
- F-strings : f"SELECT * FROM {table}"
- Portées imbriquées : Gère de manière robuste les variables à l'intérieur des fonctions et des classes.
- Commentaires/Docstrings : Ignore correctement le texte de type SQL dans les commentaires ou docstrings.
Exemples d'utilisation
- La commande
readsql 'select sushi from tokyo' -srenvoie SELECT sushi FROM tokyo- a. La commande
readsql sql_example.sql, alors quesql_example.sqlest un fichier SQL avec le code ci-dessous,
select max(height), avg(mass), min(age) from jungle group by forest where animal=elephant;
remplace le fichier par ce code
SELECT MAX(height), AVG(mass), MIN(age) FROM jungle GROUP BY forest WHERE animal=elephant;- b. La commande
readsql sql_in_python_variable_example.py, tandis quesql_in_python_variable_example.pyest un fichier Python avec le code ci-dessous,
def get_query():
limit = 6
query = f"SELEct speed from world where animal='dolphin' limit {limit}"
return query
remplace le fichier par ce code
def get_query():
limit = 6
query = f"SELECT speed FROM world WHERE animal='dolphin' LIMIT {limit}"
return query
- c. Commande
readsql sql_in_python_variable_example.py -py sql, tandis quesql_in_python_variable_example.pyest un fichier Python avec le code ci-dessous,
def get_query():
limit = 6
sql = f"SELEct speed from world where animal='dolphin' limit {limit}"
return sql
remplace le fichier par ce code
def get_query():
limit = 6
sql = f"SELECT speed FROM world WHERE animal='dolphin' LIMIT {limit}"
return sql- d. La commande
readsql tests -naffiche tout le code SQL formaté dans le dossiertests, les fichiers ne sont pas remplacés par la version formatée (l'argument-nsignifie ne pas remplacer)
/testsAjouter un hook pre-commit
Comment ajouter 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
Développement
Clonez le dépôt et utilisez uv pour le développement :
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 folderTest
uv run pytest -v--- Tranlated By Open Ai Tx | Last indexed: 2026-05-30 ---