基本介紹
records是kennethreitz的for Humans系列,使用原生sql去操作大多數的關係型資料庫(Postgresql, MySQL, SQLite, Oracle和 MS-SQL),並且支持多種格式輸出,如csv、excel、json等。
代碼不超過1000行,如果是第一次嘗試閱讀python開源項目,這是一個很好的選擇。作者Kennethreitz是requests的作者,python領域的大牛人物之一,關於他還有一個勵志的故事[Kenneth Reitz的逆襲之路]
使用方法
records庫的使用非常簡單且人性化,定義資料庫連接串和sql語句,然後將返回值作為rows列印出來,或者輸出為文件,沒有複雜的orm邏輯,實現邏輯很清晰
依賴庫
records有一些pip依賴,每個依賴項的作用如下:
源碼分析工具
建議的源碼分析工具:pycharm3.x (運行調試)+ Source Insight 4.0(展示類/變量/方法結構圖)
Source insight是一款很不錯的閱讀源碼的工具,支持很多語言,有些人說好像3版本默認不支持python,需要配置,我下載的 Source Insight 4.0,沒這個問題,打開就可以用。
代碼結構
Database類:
封裝基本資料庫操作,主要使用query方法,調用SQLAlchemy的方法,獲取結果後調用Record類獲得Record生成器,再調用RecordCollection獲得所有的結果
Record類:
接收database查詢後的keys和rows,初始化時,檢測是否長度一致,然後對其包裝,使其支持迭代,支持直接to_dict轉為dict對象,支持直接export導出。
RecordCollection類:
部分方法和Record類相同,但RecordCollection實現了first方法,獲取第一個row,如果不存在,則默認default為none,如果defalut本身就是實例或者exception的子類,直接拋出異常,另外,實現了一次實例化後多次查詢時的緩存。
全局變量和方法:
基礎概念:
測試DEMO