你的第一份Python庫源碼閱讀:records

2020-12-16 技術90分

基本介紹

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

相關焦點

  • Python3.7源碼在windows(VS2015)下的編譯和安裝
    Python3.7源碼在windows(VS2015)下的編譯和安裝下載官方源碼,使用vs2015(WIN10SDK),最python3.7.0的源碼進行編譯,編譯出不同的版本(release,debug),並配置python的運行環境(環境變量的配置)。
  • 傳說中最pythonic的第三方庫「requests」源碼閱讀_3
    本文將繼續分享requests庫源碼閱讀,主要內容為0.2.0到0.3.0的進化歷程,目的是學習大神是如何優化自己的項目以及對項目的態度,下面開始。前兩篇的分析連結傳說中最pythonic的第三方庫「requests」源碼閱讀,
  • python人工智慧項目實戰,PDF+源碼
    您將使用來自Python生態系統的庫(如TensorFlow,Keras等)來實現機器學習,深度學習和AI的核心方面。在本書的最後,您將熟練地構建自己的智能模型,以解決任何類型的AI問題,而不會有任何麻煩。
  • PEA源碼閱讀筆記
    所以在開始閱讀 PEA 代碼前,需要適當學習一下 C++ 11、14、17 新標準的一些現代化的特性。程序使用 YAML 格式的配置文件,利用 Boost 庫的 time、logging、regex、asio 等模塊實現時間、日誌、正則表達式、tcp-ip 等操作,還依賴了 Eigen3、OpenBLAS 庫做數值計算,需要事先編譯好共程序調用。
  • 小學生在網吧用python抓取LOL英雄皮膚,步驟簡單,附帶所有源碼
    你也許或一定玩過LOL英雄聯盟,但你一定沒有嘗試過用Python抓取LOL的各種英雄皮膚。隨著python在中小教育中的普及,就連小學生也開始能用python抓取LOL英雄皮膚了,不得不說,這以後買皮膚剩下的錢,都可以輕輕鬆鬆談場初戀了!
  • 測試工程師的你還在為製造測試數據苦惱嗎?Python庫Faker幫到你!
    今天給大家牆裂安利一個python的第三方庫Faker。那麼,為什麼給大家推薦呢?那是因為工作當中,有個痛點,就是真正執行測試工作前,需要製造一些虛假的數據,比如測試下單流程,我們起碼要聯繫人、電話、地址等等數據,在沒有認識這個庫之前,你是否隨便填一些小明啊,13100000000,或者亂七八糟的數據來填充呢?
  • Python新手都可以做的爬蟲,抓取網上 OJ 題庫信息
    最近有朋友在做 OJ 題庫,順手做個小爬蟲,導出一份題庫列表來看看!目標:浙江大學題庫工具:python3.6,requests 庫、lxml 庫、pycharm思路:先找到網頁中題庫所在的位置然後我們點擊第一頁和後面幾頁,看看 url 的變化發現規律了嗎?
  • 牛逼的Python書,你看過幾本?
    python書給大家,大家可以找一兩本修煉,定能讓你的功力大增.,並在開頭就安排了一章快速入門,可以讓你對python一覽眾山小,從hello,world開始讓你很快就能寫出一段python的代碼。3.編寫高質量代碼:改善Python程序的91個建議當你的python寫了1-2年之後,一定渴望寫出傳說中的pythonic代碼,那是一種融入若python精髓的代碼風格。那你一定是需要閱讀這本書,裡面全是乾貨,非常實用,把一些python技巧都講的淋漓盡致。
  • Python常用庫大全
    python-magic- 文件類型檢測的第三方庫 libmagic 的 Python 接口。 caniusepython3 – 判斷是哪個項目妨礙你你移植到 Python 3。 cookiecutter – 從 cookiecutters(項目模板)創建項目的一個命令行工具。 doitlive – 一個用來在終端中進行現場演示的工具。
  • 教你閱讀CPython的源碼
    就如同題目一樣,這篇文章就是教你了解CPython的一篇文章。因為內容太長了打算先分開寫,後期看看再合併。前言這篇文章很長但是很有用,如果你決定要學習 CPython,那麼希望你能看下去,你會發現這是一份不錯的學習資料。這篇文章總共分為 5 部分,你可以根據自己的時候合理的安排閱讀時間。
  • 教你閱讀 Cpython 的源碼(一)
    這篇文章很長但是很有用,如果你決定要學習 Cpython,那麼希望你能看下去,你會發現這是一份不錯的學習資料。這篇文章總共分為 5 部分,你可以根據自己的情況合理的安排閱讀時間。每一部分都要花一定的時間,通過自己去研究這裡面的一些案例,你會感到一種成就感,因為你掌握了 Python 的核心概念,這使得你成為一名更好的 Python 程式設計師。
  • Python 源碼閱讀:int
    a = 1>>> b = 1>>> id(a) == id(b)True >>> c = 257>>> d = 257>>> id(c) == id(d)False #在python2
  • 每個python人都離不開的12個python庫
    如果說python能取得今天的成就,一方面是它簡介的語法,更重要的一方面就是它豐富的第三方庫,可以毫不誇張的說,只要你能想到的任何一個功能模塊,都有對應的python庫,可以說正是因為有了豐富的python庫,python才發展得如此迅速,下面我們來看看python人最常用的20個python
  • 掌握了這24個頂級Python庫,你就是大神!
    因此,本文介紹了24種涵蓋端到端數據科學生命周期的Python庫。文中提及了用於數據清理、數據操作、可視化、構建模型甚至模型部署(以及其他用途)的庫。這是一個相當全面的列表,有助於你使用Python開啟數據科學之旅。
  • 使用Python圖像處理庫Pillow處理圖像文件
    Python圖像處理庫Pillow,幫助讀者進一步了解Python的基本概念:模塊、對象、方法和函數的使用。可以對應於教程正文的第2章。使用Python語言解決實際問題時,往往需要使用由第三方開發的開源Python軟體庫。本案例使用圖像處理庫Pillow中的模塊、對象來處理圖像:實現讀取圖像、獲取圖像信息、調整圖像大小、旋轉圖像、平滑圖像、剪切圖像等基本圖像處理任務。
  • 慢步學習,python庫文件概述,再來點第三方庫文件安裝的乾貨
    python庫文件是什麼?python的庫文件就是迄今為止,已經實證可以解決一定編程問題的代碼庫,所有python程序開發者都可以使用。就像哆啦A夢的百寶袋,你可以直接從這個百寶袋中取來「如意門」這個庫文件,通過正確使用這個庫文件,你就能按你心意,到達你想到達的地方。
  • python生成詞雲時,文件名與庫名重出現的錯誤提示
    近日在vs code做一個python詞雲的練習時,編譯時出現:AttributeError: module 'wordcloud' has no attribute 'WordCloud'的提示,python3.8環境下,已經安排wordcloud
  • 如何閱讀源碼?推薦一本書
    幾次想閱讀源碼,但是每回都堅持不下去,畢竟讀源碼真的是一件很難得事情。隨便一份源碼,動輒幾百個類,每個類幾百行,沒點毅力真的堅持不下來。當然,也有閱讀方法的緣故。直到我看到了一本書《通用源碼閱讀指導書》,感覺才找到了源碼閱讀的方法,也正是在這本書的指導下,我讀完了第一份開源源碼MyBatis。
  • 這樣安裝 Python 庫才是最正確的哦~
    平常我都是直接執行 pip install 安裝的第三方庫,很多教程也是這麼介紹的,一直以來我都認為這是標準的、正確的安裝 Python 第三方庫的姿勢。直到我最近看到Python核心開發者Brett Cannon 寫的一篇文章。簡單總結來說,他認為其實最正確的安裝方式是使用 python-m pip 來執行 pip 命令,無論什麼情況下均是如此。
  • 第105天: Python 操作 Word
    安裝 python-docx處理 Word 需要用到 python-docx 庫,目前版本為 0.8.10 ,執行如下安裝命令:$ pip3 install python-docx################# 運行結果 ################Collecting python-docx