Convert SQL to most human readable format. For the time being it upper cases SQL keywords, it might prettify or even suggest improvements of SQL code in the future. It converts SQL code and even SQL-strings in programming languages (only Python at the moment).
So if we write
select sushi, avg(price) from tokyo where ocean = 'pacific' group by sushi
readsql will help us read it as
SELECT sushi, AVG(price) FROM tokyo WHERE ocean = 'pacific' GROUP BY sushi
pip install readsql
- Format SQL code provided in command line
readsql <SQL_STRING> -s
- Format an SQL file or folder
- as in a folder, it will look for files ending with .sql or .py
readsql <FILE_OR_FOLDER_PATH>
It supports multiple strings and files or folders as well
readsql <SQL_STRING1> <SQL_STRING2> -s
- In Python files it looks for
query
strings and formats them
readsql <FILE_OR_FOLDER_PATH1> <FILE_OR_FOLDER_PATH2>
We can look for different strings in Python files with -py
arguments
readsql <FILE_OR_FOLDER_PATH> -py <PY_VAR1> <PY_VAR2>
-
readsql 'select sushi from tokyo' -s
command returnsSELECT sushi FROM tokyo
-
a.
readsql sql_example.sql
command, whilesql_example.sql
is a SQL file with code as below,
select max(height), avg(mass), min(age) from jungle group by forest where animal=elephant;
replaces the file with this code
SELECT MAX(height), AVG(mass), MIN(age) FROM jungle GROUP BY forest WHERE animal=elephant;
2.b. readsql sql_in_python_variable_example.py
command, while sql_in_python_variable_example.py
is a Python file with code as below,
def get_query():
limit = 6
query = f"SELEct speed from world where animal='dolphin' limit {limit}"
return query
replaces the file with this code
def get_query():
limit = 6
query = f"SELECT speed FROM world WHERE animal='dolphin' LIMIT {limit}"
return query
2.c. readsql sql_in_python_variable_example.py -py sql
command, while sql_in_python_variable_example.py
is a Python file with code as below,
def get_query():
limit = 6
sql = f"SELEct speed from world where animal='dolphin' limit {limit}"
return sql
replaces the file with this code
def get_query():
limit = 6
sql = f"SELECT speed FROM world WHERE animal='dolphin' LIMIT {limit}"
return sql
2.d. readsql tests -n
command outputs all of the formated SQL code in tests
folder, files are not replaced by the formatted version (-n
argument stand for not-replace)
More examples can be found in /tests
folder
How to add a pre-commit hook of readsql?
repos:
- repo: https://github.com/AzisK/readsql
rev: 0.1.1 # Replace by any tag/version: https://github.com/azisk/readsql/tags
hooks:
- id: readsql
Having the repo cloned dig into
python -m readsql "select sushi from tokyo" -s
takes the"select sushi from tokyo"
string as input and outputs it formattedpython -m readsql tests/sql_example.sql
converts example SQL code to easier readable formatpython -m readsql tests/sql_in_python_example.py
converts example SQL code in Python (it looks for variablesquery
)- we can change the SQL variable with
-py
optionpython -m readsql tests/sql_in_python_variable_example.py -py sql
python -m readsql tests
formats all Python and SQL files intests
folder
Have pytest
installed and run pytest -v
(-v stands for verbose)