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')
一次抓取一行:
> >> 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" : ...} > , ...]
如果您只期望一個結果:
> >> 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 整合功能,可讓您使用一行程式碼將結果匯出到 CSV、XLS、JSON、HTML 表、YAML 或 Pandas DataFrame。非常適合與朋友分享資料或產生報告。
>>> 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]
?
感謝您檢查這個圖書館!我希望你覺得它有用。
當然,總有改進的空間。請隨意提出問題,以便我們可以讓 Records 變得更好、更強、更快。