readsql
SQLを最も人間に読みやすい形式に変換します。現時点ではSQLキーワードを大文字にしますが、将来的にはSQLコードの整形や改善案の提案も行う可能性があります。SQLコードやプログラミング言語内のSQL文字列(現時点ではPythonのみ)を変換します。
ですので、もし私たちが書くときは
select sushi, avg(price) from tokyo where ocean = 'pacific' group by sushireadsqlはそれを次のように読み取るのに役立ちます
SELECT sushi, AVG(price) FROM tokyo WHERE ocean = 'pacific' GROUP BY sushiインストール
pip install readsql
Python 3.8以上が必要です。使用方法
- コマンドラインで提供されたSQLコードをフォーマットする
readsql-s - SQLファイルまたはフォルダをフォーマットする
- フォルダの場合、拡張子が.sqlまたは.pyのファイルを探します
readsql
1.
readsql -s
- Pythonファイル内で変数
queryの文字列を検索し、それらをフォーマットします
readsql -py 引数を使って Python ファイル内の異なる文字列を検索できます
readsql -py 注意: readsql はPythonのASTパーサーを使用しているため、以下をサポートします:
- 型ヒント: query: str = "..."
- F文字列: f"SELECT * FROM {table}"
- ネストされたスコープ: 関数やクラス内の変数も堅牢に処理します。
- コメント/ドキュメンテーション文字列: コメントやドキュメンテーション文字列内のSQL風テキストを正しく無視します。
使用例
readsql 'select sushi from tokyo' -sコマンドは次を返しますSELECT sushi FROM tokyo- a.
readsql sql_example.sqlコマンドは、sql_example.sqlが以下のようなSQLコードを含むファイルの場合、
select max(height), avg(mass), min(age) from jungle group by forest where animal=elephant;
このコードでファイルを置き換えます
SELECT MAX(height), AVG(mass), MIN(age) FROM jungle GROUP BY forest WHERE animal=elephant;
- b.
readsql sql_in_python_variable_example.pyコマンド、ここでsql_in_python_variable_example.pyは以下のコードを含む Python ファイルです、
def get_query():
limit = 6
query = f"SELEct speed from world where animal='dolphin' limit {limit}"
return query
このコードでファイルを置き換えます
def get_query():
limit = 6
query = f"SELECT speed FROM world WHERE animal='dolphin' LIMIT {limit}"
return query- c.
readsql sql_in_python_variable_example.py -py sqlコマンド、ここでsql_in_python_variable_example.pyは以下のコードを含むPythonファイルです、
def get_query():
limit = 6
sql = f"SELEct speed from world where animal='dolphin' limit {limit}"
return sql
このコードでファイルを置き換えます
def get_query():
limit = 6
sql = f"SELECT speed FROM world WHERE animal='dolphin' LIMIT {limit}"
return sql- d.
readsql tests -nコマンドはtestsフォルダ内のすべてのフォーマットされたSQLコードを出力しますが、ファイルはフォーマットされたバージョンに置き換えられません(-n引数は置き換えなしを意味します)
/tests フォルダにありますpre-commit フックの追加
readsql の pre-commit フックを追加する方法は?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
開発
リポジトリをクローンし、開発にはuvを使用してください:
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 folderテスト
uv run pytest -v--- Tranlated By Open Ai Tx | Last indexed: 2026-05-30 ---