Records は、ほとんどのリレーショナル データベースに対して生の SQL クエリを作成するための、非常にシンプルですが強力なライブラリです。
SQLを書くだけです。ベルもホイッスルもありません。この一般的なタスクは、利用可能な標準ツールでは驚くほど難しい場合があります。このライブラリは、クエリ結果を操作するためのエレガントなインターフェイスを提供しながら、このワークフローを可能な限りシンプルにするよう努めています。
データベースのサポートには、RedShift、Postgres、MySQL、SQLite、Oracle、MS-SQL が含まれます (ドライバーは含まれません)。
SQL の書き方はわかったので、データベースに SQL を送信しましょう。
import records
db = records . Database ( 'postgres://...' )
rows = db . query ( 'select * from active_users' ) # or db.query_file('sqls/active-users.sql')
一度に 1 行を取得します。
> >> rows [ 0 ]
< Record { "username" : "model-t" , "active" : true , "name" : "Henry Ford" , "user_email" : "[email protected]" , "timezone" : "2016-02-06 22:28:23.894202" } >
または、それらを反復処理します。
for r in rows :
print ( r . name , r . user_email )
値にはさまざまな方法でアクセスできます: row.user_email
、 row['user_email']
、またはrow[3]
。
英数字以外の文字 (スペースなど) を含むフィールドも完全にサポートされます。
または、後で参照できるようにレコード コレクションのコピーを保存します。
> >> rows . all ()
[ < Record { "username" : ...} > , < Record { "username" : ...} > , < Record { "username" : ...} > , ...]
1 つの結果のみを期待する場合:
> >> rows . first ()
< Record { "username" : ...} >
その他のオプションには、 rows.as_dict()
およびrows.as_dict(ordered=True)
があります。
$DATABASE_URL
環境変数のサポート。Database.get_table_names
メソッド。Database.query('life=:everything', everything=42)
。t = Database.transaction(); t.commit()
。Database.bulk_query()
およびDatabase.bulk_query_file()
。Records は SQLAlchemy と Tablib を誇りを持って提供しています。
Records には完全な Tablib 統合も備えており、1 行のコードで結果を CSV、XLS、JSON、HTML テーブル、YAML、または Pandas DataFrames にエクスポートできます。友人とデータを共有したり、レポートを作成したりするのに最適です。
>>> print (rows.dataset)
username|active|name |user_email |timezone
--------|------|----------|-----------------|--------------------------
model-t |True |Henry Ford|[email protected]|2016-02-06 22:28:23.894202
...
カンマ区切り値 (CSV)
>>> print (rows.export( ' csv ' ))
username,active,name,user_email,timezone
model-t,True,Henry Ford,[email protected],2016-02-06 22:28:23.894202
...
YAML はマークアップ言語ではありません (YAML)
> >> print ( rows . export ( 'yaml' ))
- { active : true , name : Henry Ford , timezone : '2016-02-06 22:28:23.894202' , user_email : model - t @ gmail . com , username : model - t }
...
JavaScript オブジェクト表記法 (JSON)
> >> print ( rows . export ( 'json' ))
[{ "username" : "model-t" , "active" : true , "name" : "Henry Ford" , "user_email" : "[email protected]" , "timezone" : "2016-02-06 22:28:23.894202" }, ...]
Microsoft Excel (xls、xlsx)
with open ( 'report.xls' , 'wb' ) as f :
f . write ( rows . export ( 'xls' ))
パンダのデータフレーム
> >> rows . export ( 'df' )
username active name user_email timezone
0 model - t True Henry Ford model - t @ gmail . com 2016 - 02 - 06 22 : 28 : 23.894202
要点はわかります。 Tablib の他のすべての機能も利用できるため、結果の並べ替え、列/行の追加/削除、重複の削除、テーブルの転置、区切り記号の追加、列ごとのデータのスライスなどを行うことができます。
詳細については、Tablib ドキュメントを参照してください。
もちろん、推奨されるインストール方法は Pipenv です。
$ pipenv install records[pandas]
?
このライブラリをチェックしていただきありがとうございます!お役に立てば幸いです。
もちろん、改善の余地は常にあります。レコードをより良く、より強力に、より速くするために、お気軽に問題を開いてください。