'Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫'

數據庫 Python SQL MySQL HTML YAML PostgreSQL Excel 軟件測試開發技術棧 2019-09-16
"
"
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下

  • MySQL數據庫:mysql-connectorpymysql
  • PostgreSQL數據庫:psycopg2
  • Oracle數據庫 cx_Oracle
  • SQLite數據庫: sqlite3

但這樣卻使得我們不得不面臨一個問題,代碼中涉及不同數據庫,操作方式也不盡相同,容易出現代碼冗餘、不規範,風格不統一等等問題。

後來接觸到 Python SQLAlchemy(ORM框架)模塊,一定程度上解決了各數據庫的SQL差異,但 SQLAlchemy 在消除各數據庫SQL差異的同時卻會引入各框架CRUD的差異。而我們往往就具有一定的SQL基礎,如果一個框架強制用戶只能使用其規定的CRUD形式那反而增加用戶的學習成本,導致長學習曲線。

同時,個人為人直接地執行SQL而不是使用框架設定的CRUD不應當是一種低級的操作應當是一種被鼓厲的標準化行為。


遇到 Records

Records 是一個非常簡單且功能強大的庫,適用於大多數關係型數據庫的 原始SQL操作,三個字,強無敵

Records 的特點:

  • 基於 SQLAlchemy 和 Tablib 開發。
  • 方法非常簡單且統一。
  • 支持緩存查詢的數據.
  • 自動實現上下文管理器,不需要關注數據連接狀態。
  • 支持數據庫事務,保持數據的原子性和一致性。
  • 支持安全的參數化查詢,以安全的形式進行動態參數傳遞,防止 sql 語句不規範導致的安全問題;
  • 支持主流數據庫,如 RedShift, Postgres, MySQL, SQLite, Oracle, 和 MS-SQL

Records 安裝

我們在Windows 10 Python3環境下,使用pip進行安裝 ,安裝命令如下:

 pip install records 

安裝過程如下:

"
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下

  • MySQL數據庫:mysql-connectorpymysql
  • PostgreSQL數據庫:psycopg2
  • Oracle數據庫 cx_Oracle
  • SQLite數據庫: sqlite3

但這樣卻使得我們不得不面臨一個問題,代碼中涉及不同數據庫,操作方式也不盡相同,容易出現代碼冗餘、不規範,風格不統一等等問題。

後來接觸到 Python SQLAlchemy(ORM框架)模塊,一定程度上解決了各數據庫的SQL差異,但 SQLAlchemy 在消除各數據庫SQL差異的同時卻會引入各框架CRUD的差異。而我們往往就具有一定的SQL基礎,如果一個框架強制用戶只能使用其規定的CRUD形式那反而增加用戶的學習成本,導致長學習曲線。

同時,個人為人直接地執行SQL而不是使用框架設定的CRUD不應當是一種低級的操作應當是一種被鼓厲的標準化行為。


遇到 Records

Records 是一個非常簡單且功能強大的庫,適用於大多數關係型數據庫的 原始SQL操作,三個字,強無敵

Records 的特點:

  • 基於 SQLAlchemy 和 Tablib 開發。
  • 方法非常簡單且統一。
  • 支持緩存查詢的數據.
  • 自動實現上下文管理器,不需要關注數據連接狀態。
  • 支持數據庫事務,保持數據的原子性和一致性。
  • 支持安全的參數化查詢,以安全的形式進行動態參數傳遞,防止 sql 語句不規範導致的安全問題;
  • 支持主流數據庫,如 RedShift, Postgres, MySQL, SQLite, Oracle, 和 MS-SQL

Records 安裝

我們在Windows 10 Python3環境下,使用pip進行安裝 ,安裝命令如下:

 pip install records 

安裝過程如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。


首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下

"
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下

  • MySQL數據庫:mysql-connectorpymysql
  • PostgreSQL數據庫:psycopg2
  • Oracle數據庫 cx_Oracle
  • SQLite數據庫: sqlite3

但這樣卻使得我們不得不面臨一個問題,代碼中涉及不同數據庫,操作方式也不盡相同,容易出現代碼冗餘、不規範,風格不統一等等問題。

後來接觸到 Python SQLAlchemy(ORM框架)模塊,一定程度上解決了各數據庫的SQL差異,但 SQLAlchemy 在消除各數據庫SQL差異的同時卻會引入各框架CRUD的差異。而我們往往就具有一定的SQL基礎,如果一個框架強制用戶只能使用其規定的CRUD形式那反而增加用戶的學習成本,導致長學習曲線。

同時,個人為人直接地執行SQL而不是使用框架設定的CRUD不應當是一種低級的操作應當是一種被鼓厲的標準化行為。


遇到 Records

Records 是一個非常簡單且功能強大的庫,適用於大多數關係型數據庫的 原始SQL操作,三個字,強無敵

Records 的特點:

  • 基於 SQLAlchemy 和 Tablib 開發。
  • 方法非常簡單且統一。
  • 支持緩存查詢的數據.
  • 自動實現上下文管理器,不需要關注數據連接狀態。
  • 支持數據庫事務,保持數據的原子性和一致性。
  • 支持安全的參數化查詢,以安全的形式進行動態參數傳遞,防止 sql 語句不規範導致的安全問題;
  • 支持主流數據庫,如 RedShift, Postgres, MySQL, SQLite, Oracle, 和 MS-SQL

Records 安裝

我們在Windows 10 Python3環境下,使用pip進行安裝 ,安裝命令如下:

 pip install records 

安裝過程如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。


首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

Records 操作數據的步驟非常的簡單,如下:

  1. 連接數據庫,返回 DB 數據庫對象。
  2. 使用 query 方法執行 SQL 語句。

創建表

"
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下

  • MySQL數據庫:mysql-connectorpymysql
  • PostgreSQL數據庫:psycopg2
  • Oracle數據庫 cx_Oracle
  • SQLite數據庫: sqlite3

但這樣卻使得我們不得不面臨一個問題,代碼中涉及不同數據庫,操作方式也不盡相同,容易出現代碼冗餘、不規範,風格不統一等等問題。

後來接觸到 Python SQLAlchemy(ORM框架)模塊,一定程度上解決了各數據庫的SQL差異,但 SQLAlchemy 在消除各數據庫SQL差異的同時卻會引入各框架CRUD的差異。而我們往往就具有一定的SQL基礎,如果一個框架強制用戶只能使用其規定的CRUD形式那反而增加用戶的學習成本,導致長學習曲線。

同時,個人為人直接地執行SQL而不是使用框架設定的CRUD不應當是一種低級的操作應當是一種被鼓厲的標準化行為。


遇到 Records

Records 是一個非常簡單且功能強大的庫,適用於大多數關係型數據庫的 原始SQL操作,三個字,強無敵

Records 的特點:

  • 基於 SQLAlchemy 和 Tablib 開發。
  • 方法非常簡單且統一。
  • 支持緩存查詢的數據.
  • 自動實現上下文管理器,不需要關注數據連接狀態。
  • 支持數據庫事務,保持數據的原子性和一致性。
  • 支持安全的參數化查詢,以安全的形式進行動態參數傳遞,防止 sql 語句不規範導致的安全問題;
  • 支持主流數據庫,如 RedShift, Postgres, MySQL, SQLite, Oracle, 和 MS-SQL

Records 安裝

我們在Windows 10 Python3環境下,使用pip進行安裝 ,安裝命令如下:

 pip install records 

安裝過程如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。


首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

Records 操作數據的步驟非常的簡單,如下:

  1. 連接數據庫,返回 DB 數據庫對象。
  2. 使用 query 方法執行 SQL 語句。

創建表

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

插入數據

Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。

"
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下

  • MySQL數據庫:mysql-connectorpymysql
  • PostgreSQL數據庫:psycopg2
  • Oracle數據庫 cx_Oracle
  • SQLite數據庫: sqlite3

但這樣卻使得我們不得不面臨一個問題,代碼中涉及不同數據庫,操作方式也不盡相同,容易出現代碼冗餘、不規範,風格不統一等等問題。

後來接觸到 Python SQLAlchemy(ORM框架)模塊,一定程度上解決了各數據庫的SQL差異,但 SQLAlchemy 在消除各數據庫SQL差異的同時卻會引入各框架CRUD的差異。而我們往往就具有一定的SQL基礎,如果一個框架強制用戶只能使用其規定的CRUD形式那反而增加用戶的學習成本,導致長學習曲線。

同時,個人為人直接地執行SQL而不是使用框架設定的CRUD不應當是一種低級的操作應當是一種被鼓厲的標準化行為。


遇到 Records

Records 是一個非常簡單且功能強大的庫,適用於大多數關係型數據庫的 原始SQL操作,三個字,強無敵

Records 的特點:

  • 基於 SQLAlchemy 和 Tablib 開發。
  • 方法非常簡單且統一。
  • 支持緩存查詢的數據.
  • 自動實現上下文管理器,不需要關注數據連接狀態。
  • 支持數據庫事務,保持數據的原子性和一致性。
  • 支持安全的參數化查詢,以安全的形式進行動態參數傳遞,防止 sql 語句不規範導致的安全問題;
  • 支持主流數據庫,如 RedShift, Postgres, MySQL, SQLite, Oracle, 和 MS-SQL

Records 安裝

我們在Windows 10 Python3環境下,使用pip進行安裝 ,安裝命令如下:

 pip install records 

安裝過程如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。


首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

Records 操作數據的步驟非常的簡單,如下:

  1. 連接數據庫,返回 DB 數據庫對象。
  2. 使用 query 方法執行 SQL 語句。

創建表

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

插入數據

Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


批量插入

SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。

"
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下

  • MySQL數據庫:mysql-connectorpymysql
  • PostgreSQL數據庫:psycopg2
  • Oracle數據庫 cx_Oracle
  • SQLite數據庫: sqlite3

但這樣卻使得我們不得不面臨一個問題,代碼中涉及不同數據庫,操作方式也不盡相同,容易出現代碼冗餘、不規範,風格不統一等等問題。

後來接觸到 Python SQLAlchemy(ORM框架)模塊,一定程度上解決了各數據庫的SQL差異,但 SQLAlchemy 在消除各數據庫SQL差異的同時卻會引入各框架CRUD的差異。而我們往往就具有一定的SQL基礎,如果一個框架強制用戶只能使用其規定的CRUD形式那反而增加用戶的學習成本,導致長學習曲線。

同時,個人為人直接地執行SQL而不是使用框架設定的CRUD不應當是一種低級的操作應當是一種被鼓厲的標準化行為。


遇到 Records

Records 是一個非常簡單且功能強大的庫,適用於大多數關係型數據庫的 原始SQL操作,三個字,強無敵

Records 的特點:

  • 基於 SQLAlchemy 和 Tablib 開發。
  • 方法非常簡單且統一。
  • 支持緩存查詢的數據.
  • 自動實現上下文管理器,不需要關注數據連接狀態。
  • 支持數據庫事務,保持數據的原子性和一致性。
  • 支持安全的參數化查詢,以安全的形式進行動態參數傳遞,防止 sql 語句不規範導致的安全問題;
  • 支持主流數據庫,如 RedShift, Postgres, MySQL, SQLite, Oracle, 和 MS-SQL

Records 安裝

我們在Windows 10 Python3環境下,使用pip進行安裝 ,安裝命令如下:

 pip install records 

安裝過程如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。


首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

Records 操作數據的步驟非常的簡單,如下:

  1. 連接數據庫,返回 DB 數據庫對象。
  2. 使用 query 方法執行 SQL 語句。

創建表

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

插入數據

Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


批量插入

SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


數據查詢

我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:

  • as_dict=True:參數轉成字典形式。
  • as_ordereddict=True:轉成排序字典形式。
"
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下

  • MySQL數據庫:mysql-connectorpymysql
  • PostgreSQL數據庫:psycopg2
  • Oracle數據庫 cx_Oracle
  • SQLite數據庫: sqlite3

但這樣卻使得我們不得不面臨一個問題,代碼中涉及不同數據庫,操作方式也不盡相同,容易出現代碼冗餘、不規範,風格不統一等等問題。

後來接觸到 Python SQLAlchemy(ORM框架)模塊,一定程度上解決了各數據庫的SQL差異,但 SQLAlchemy 在消除各數據庫SQL差異的同時卻會引入各框架CRUD的差異。而我們往往就具有一定的SQL基礎,如果一個框架強制用戶只能使用其規定的CRUD形式那反而增加用戶的學習成本,導致長學習曲線。

同時,個人為人直接地執行SQL而不是使用框架設定的CRUD不應當是一種低級的操作應當是一種被鼓厲的標準化行為。


遇到 Records

Records 是一個非常簡單且功能強大的庫,適用於大多數關係型數據庫的 原始SQL操作,三個字,強無敵

Records 的特點:

  • 基於 SQLAlchemy 和 Tablib 開發。
  • 方法非常簡單且統一。
  • 支持緩存查詢的數據.
  • 自動實現上下文管理器,不需要關注數據連接狀態。
  • 支持數據庫事務,保持數據的原子性和一致性。
  • 支持安全的參數化查詢,以安全的形式進行動態參數傳遞,防止 sql 語句不規範導致的安全問題;
  • 支持主流數據庫,如 RedShift, Postgres, MySQL, SQLite, Oracle, 和 MS-SQL

Records 安裝

我們在Windows 10 Python3環境下,使用pip進行安裝 ,安裝命令如下:

 pip install records 

安裝過程如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。


首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

Records 操作數據的步驟非常的簡單,如下:

  1. 連接數據庫,返回 DB 數據庫對象。
  2. 使用 query 方法執行 SQL 語句。

創建表

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

插入數據

Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


批量插入

SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


數據查詢

我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:

  • as_dict=True:參數轉成字典形式。
  • as_ordereddict=True:轉成排序字典形式。
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


字段獲取

"
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下

  • MySQL數據庫:mysql-connectorpymysql
  • PostgreSQL數據庫:psycopg2
  • Oracle數據庫 cx_Oracle
  • SQLite數據庫: sqlite3

但這樣卻使得我們不得不面臨一個問題,代碼中涉及不同數據庫,操作方式也不盡相同,容易出現代碼冗餘、不規範,風格不統一等等問題。

後來接觸到 Python SQLAlchemy(ORM框架)模塊,一定程度上解決了各數據庫的SQL差異,但 SQLAlchemy 在消除各數據庫SQL差異的同時卻會引入各框架CRUD的差異。而我們往往就具有一定的SQL基礎,如果一個框架強制用戶只能使用其規定的CRUD形式那反而增加用戶的學習成本,導致長學習曲線。

同時,個人為人直接地執行SQL而不是使用框架設定的CRUD不應當是一種低級的操作應當是一種被鼓厲的標準化行為。


遇到 Records

Records 是一個非常簡單且功能強大的庫,適用於大多數關係型數據庫的 原始SQL操作,三個字,強無敵

Records 的特點:

  • 基於 SQLAlchemy 和 Tablib 開發。
  • 方法非常簡單且統一。
  • 支持緩存查詢的數據.
  • 自動實現上下文管理器,不需要關注數據連接狀態。
  • 支持數據庫事務,保持數據的原子性和一致性。
  • 支持安全的參數化查詢,以安全的形式進行動態參數傳遞,防止 sql 語句不規範導致的安全問題;
  • 支持主流數據庫,如 RedShift, Postgres, MySQL, SQLite, Oracle, 和 MS-SQL

Records 安裝

我們在Windows 10 Python3環境下,使用pip進行安裝 ,安裝命令如下:

 pip install records 

安裝過程如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。


首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

Records 操作數據的步驟非常的簡單,如下:

  1. 連接數據庫,返回 DB 數據庫對象。
  2. 使用 query 方法執行 SQL 語句。

創建表

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

插入數據

Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


批量插入

SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


數據查詢

我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:

  • as_dict=True:參數轉成字典形式。
  • as_ordereddict=True:轉成排序字典形式。
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


字段獲取

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

執行上述代碼,輸出結果如下:

"
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下

  • MySQL數據庫:mysql-connectorpymysql
  • PostgreSQL數據庫:psycopg2
  • Oracle數據庫 cx_Oracle
  • SQLite數據庫: sqlite3

但這樣卻使得我們不得不面臨一個問題,代碼中涉及不同數據庫,操作方式也不盡相同,容易出現代碼冗餘、不規範,風格不統一等等問題。

後來接觸到 Python SQLAlchemy(ORM框架)模塊,一定程度上解決了各數據庫的SQL差異,但 SQLAlchemy 在消除各數據庫SQL差異的同時卻會引入各框架CRUD的差異。而我們往往就具有一定的SQL基礎,如果一個框架強制用戶只能使用其規定的CRUD形式那反而增加用戶的學習成本,導致長學習曲線。

同時,個人為人直接地執行SQL而不是使用框架設定的CRUD不應當是一種低級的操作應當是一種被鼓厲的標準化行為。


遇到 Records

Records 是一個非常簡單且功能強大的庫,適用於大多數關係型數據庫的 原始SQL操作,三個字,強無敵

Records 的特點:

  • 基於 SQLAlchemy 和 Tablib 開發。
  • 方法非常簡單且統一。
  • 支持緩存查詢的數據.
  • 自動實現上下文管理器,不需要關注數據連接狀態。
  • 支持數據庫事務,保持數據的原子性和一致性。
  • 支持安全的參數化查詢,以安全的形式進行動態參數傳遞,防止 sql 語句不規範導致的安全問題;
  • 支持主流數據庫,如 RedShift, Postgres, MySQL, SQLite, Oracle, 和 MS-SQL

Records 安裝

我們在Windows 10 Python3環境下,使用pip進行安裝 ,安裝命令如下:

 pip install records 

安裝過程如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。


首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

Records 操作數據的步驟非常的簡單,如下:

  1. 連接數據庫,返回 DB 數據庫對象。
  2. 使用 query 方法執行 SQL 語句。

創建表

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

插入數據

Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


批量插入

SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


數據查詢

我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:

  • as_dict=True:參數轉成字典形式。
  • as_ordereddict=True:轉成排序字典形式。
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


字段獲取

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

執行上述代碼,輸出結果如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


支持數據庫事務

數據庫事務是經常需要使用到的數據庫操作,他通常是為了保持數據原子性和一致性。

比如商品銷量與存量的數據庫操作:

  1. 讀取商品銷量數據。
  2. 更新商品銷量增加1。
  3. 讀取商品存量數量。
  4. 更新商品存量減少1。

該場景下,我們須保證這 4 步均執行成功。如果第1步已經執行成功,但是到第 3 步發生了錯誤導致後面數據庫操作不能執行,會導致商品銷量與存量混亂。records 模塊提高了強大的數據庫事務支持,通過數據庫事務就能避免這種情況,如下:

"
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下

  • MySQL數據庫:mysql-connectorpymysql
  • PostgreSQL數據庫:psycopg2
  • Oracle數據庫 cx_Oracle
  • SQLite數據庫: sqlite3

但這樣卻使得我們不得不面臨一個問題,代碼中涉及不同數據庫,操作方式也不盡相同,容易出現代碼冗餘、不規範,風格不統一等等問題。

後來接觸到 Python SQLAlchemy(ORM框架)模塊,一定程度上解決了各數據庫的SQL差異,但 SQLAlchemy 在消除各數據庫SQL差異的同時卻會引入各框架CRUD的差異。而我們往往就具有一定的SQL基礎,如果一個框架強制用戶只能使用其規定的CRUD形式那反而增加用戶的學習成本,導致長學習曲線。

同時,個人為人直接地執行SQL而不是使用框架設定的CRUD不應當是一種低級的操作應當是一種被鼓厲的標準化行為。


遇到 Records

Records 是一個非常簡單且功能強大的庫,適用於大多數關係型數據庫的 原始SQL操作,三個字,強無敵

Records 的特點:

  • 基於 SQLAlchemy 和 Tablib 開發。
  • 方法非常簡單且統一。
  • 支持緩存查詢的數據.
  • 自動實現上下文管理器,不需要關注數據連接狀態。
  • 支持數據庫事務,保持數據的原子性和一致性。
  • 支持安全的參數化查詢,以安全的形式進行動態參數傳遞,防止 sql 語句不規範導致的安全問題;
  • 支持主流數據庫,如 RedShift, Postgres, MySQL, SQLite, Oracle, 和 MS-SQL

Records 安裝

我們在Windows 10 Python3環境下,使用pip進行安裝 ,安裝命令如下:

 pip install records 

安裝過程如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。


首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

Records 操作數據的步驟非常的簡單,如下:

  1. 連接數據庫,返回 DB 數據庫對象。
  2. 使用 query 方法執行 SQL 語句。

創建表

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

插入數據

Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


批量插入

SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


數據查詢

我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:

  • as_dict=True:參數轉成字典形式。
  • as_ordereddict=True:轉成排序字典形式。
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


字段獲取

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

執行上述代碼,輸出結果如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


支持數據庫事務

數據庫事務是經常需要使用到的數據庫操作,他通常是為了保持數據原子性和一致性。

比如商品銷量與存量的數據庫操作:

  1. 讀取商品銷量數據。
  2. 更新商品銷量增加1。
  3. 讀取商品存量數量。
  4. 更新商品存量減少1。

該場景下,我們須保證這 4 步均執行成功。如果第1步已經執行成功,但是到第 3 步發生了錯誤導致後面數據庫操作不能執行,會導致商品銷量與存量混亂。records 模塊提高了強大的數據庫事務支持,通過數據庫事務就能避免這種情況,如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

執行上述代碼,我們可以看到,當with中存在失敗的執行語句時,歷史執行SQL 不生效,如下:

"
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下

  • MySQL數據庫:mysql-connectorpymysql
  • PostgreSQL數據庫:psycopg2
  • Oracle數據庫 cx_Oracle
  • SQLite數據庫: sqlite3

但這樣卻使得我們不得不面臨一個問題,代碼中涉及不同數據庫,操作方式也不盡相同,容易出現代碼冗餘、不規範,風格不統一等等問題。

後來接觸到 Python SQLAlchemy(ORM框架)模塊,一定程度上解決了各數據庫的SQL差異,但 SQLAlchemy 在消除各數據庫SQL差異的同時卻會引入各框架CRUD的差異。而我們往往就具有一定的SQL基礎,如果一個框架強制用戶只能使用其規定的CRUD形式那反而增加用戶的學習成本,導致長學習曲線。

同時,個人為人直接地執行SQL而不是使用框架設定的CRUD不應當是一種低級的操作應當是一種被鼓厲的標準化行為。


遇到 Records

Records 是一個非常簡單且功能強大的庫,適用於大多數關係型數據庫的 原始SQL操作,三個字,強無敵

Records 的特點:

  • 基於 SQLAlchemy 和 Tablib 開發。
  • 方法非常簡單且統一。
  • 支持緩存查詢的數據.
  • 自動實現上下文管理器,不需要關注數據連接狀態。
  • 支持數據庫事務,保持數據的原子性和一致性。
  • 支持安全的參數化查詢,以安全的形式進行動態參數傳遞,防止 sql 語句不規範導致的安全問題;
  • 支持主流數據庫,如 RedShift, Postgres, MySQL, SQLite, Oracle, 和 MS-SQL

Records 安裝

我們在Windows 10 Python3環境下,使用pip進行安裝 ,安裝命令如下:

 pip install records 

安裝過程如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。


首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

Records 操作數據的步驟非常的簡單,如下:

  1. 連接數據庫,返回 DB 數據庫對象。
  2. 使用 query 方法執行 SQL 語句。

創建表

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

插入數據

Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


批量插入

SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


數據查詢

我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:

  • as_dict=True:參數轉成字典形式。
  • as_ordereddict=True:轉成排序字典形式。
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


字段獲取

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

執行上述代碼,輸出結果如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


支持數據庫事務

數據庫事務是經常需要使用到的數據庫操作,他通常是為了保持數據原子性和一致性。

比如商品銷量與存量的數據庫操作:

  1. 讀取商品銷量數據。
  2. 更新商品銷量增加1。
  3. 讀取商品存量數量。
  4. 更新商品存量減少1。

該場景下,我們須保證這 4 步均執行成功。如果第1步已經執行成功,但是到第 3 步發生了錯誤導致後面數據庫操作不能執行,會導致商品銷量與存量混亂。records 模塊提高了強大的數據庫事務支持,通過數據庫事務就能避免這種情況,如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

執行上述代碼,我們可以看到,當with中存在失敗的執行語句時,歷史執行SQL 不生效,如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


數據導出至xlsx

"
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下

  • MySQL數據庫:mysql-connectorpymysql
  • PostgreSQL數據庫:psycopg2
  • Oracle數據庫 cx_Oracle
  • SQLite數據庫: sqlite3

但這樣卻使得我們不得不面臨一個問題,代碼中涉及不同數據庫,操作方式也不盡相同,容易出現代碼冗餘、不規範,風格不統一等等問題。

後來接觸到 Python SQLAlchemy(ORM框架)模塊,一定程度上解決了各數據庫的SQL差異,但 SQLAlchemy 在消除各數據庫SQL差異的同時卻會引入各框架CRUD的差異。而我們往往就具有一定的SQL基礎,如果一個框架強制用戶只能使用其規定的CRUD形式那反而增加用戶的學習成本,導致長學習曲線。

同時,個人為人直接地執行SQL而不是使用框架設定的CRUD不應當是一種低級的操作應當是一種被鼓厲的標準化行為。


遇到 Records

Records 是一個非常簡單且功能強大的庫,適用於大多數關係型數據庫的 原始SQL操作,三個字,強無敵

Records 的特點:

  • 基於 SQLAlchemy 和 Tablib 開發。
  • 方法非常簡單且統一。
  • 支持緩存查詢的數據.
  • 自動實現上下文管理器,不需要關注數據連接狀態。
  • 支持數據庫事務,保持數據的原子性和一致性。
  • 支持安全的參數化查詢,以安全的形式進行動態參數傳遞,防止 sql 語句不規範導致的安全問題;
  • 支持主流數據庫,如 RedShift, Postgres, MySQL, SQLite, Oracle, 和 MS-SQL

Records 安裝

我們在Windows 10 Python3環境下,使用pip進行安裝 ,安裝命令如下:

 pip install records 

安裝過程如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。


首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

Records 操作數據的步驟非常的簡單,如下:

  1. 連接數據庫,返回 DB 數據庫對象。
  2. 使用 query 方法執行 SQL 語句。

創建表

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

插入數據

Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


批量插入

SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


數據查詢

我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:

  • as_dict=True:參數轉成字典形式。
  • as_ordereddict=True:轉成排序字典形式。
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


字段獲取

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

執行上述代碼,輸出結果如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


支持數據庫事務

數據庫事務是經常需要使用到的數據庫操作,他通常是為了保持數據原子性和一致性。

比如商品銷量與存量的數據庫操作:

  1. 讀取商品銷量數據。
  2. 更新商品銷量增加1。
  3. 讀取商品存量數量。
  4. 更新商品存量減少1。

該場景下,我們須保證這 4 步均執行成功。如果第1步已經執行成功,但是到第 3 步發生了錯誤導致後面數據庫操作不能執行,會導致商品銷量與存量混亂。records 模塊提高了強大的數據庫事務支持,通過數據庫事務就能避免這種情況,如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

執行上述代碼,我們可以看到,當with中存在失敗的執行語句時,歷史執行SQL 不生效,如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


數據導出至xlsx

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

執行上述代碼,實現數據庫查詢結果的導出到xlsx中,如下:

"
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下

  • MySQL數據庫:mysql-connectorpymysql
  • PostgreSQL數據庫:psycopg2
  • Oracle數據庫 cx_Oracle
  • SQLite數據庫: sqlite3

但這樣卻使得我們不得不面臨一個問題,代碼中涉及不同數據庫,操作方式也不盡相同,容易出現代碼冗餘、不規範,風格不統一等等問題。

後來接觸到 Python SQLAlchemy(ORM框架)模塊,一定程度上解決了各數據庫的SQL差異,但 SQLAlchemy 在消除各數據庫SQL差異的同時卻會引入各框架CRUD的差異。而我們往往就具有一定的SQL基礎,如果一個框架強制用戶只能使用其規定的CRUD形式那反而增加用戶的學習成本,導致長學習曲線。

同時,個人為人直接地執行SQL而不是使用框架設定的CRUD不應當是一種低級的操作應當是一種被鼓厲的標準化行為。


遇到 Records

Records 是一個非常簡單且功能強大的庫,適用於大多數關係型數據庫的 原始SQL操作,三個字,強無敵

Records 的特點:

  • 基於 SQLAlchemy 和 Tablib 開發。
  • 方法非常簡單且統一。
  • 支持緩存查詢的數據.
  • 自動實現上下文管理器,不需要關注數據連接狀態。
  • 支持數據庫事務,保持數據的原子性和一致性。
  • 支持安全的參數化查詢,以安全的形式進行動態參數傳遞,防止 sql 語句不規範導致的安全問題;
  • 支持主流數據庫,如 RedShift, Postgres, MySQL, SQLite, Oracle, 和 MS-SQL

Records 安裝

我們在Windows 10 Python3環境下,使用pip進行安裝 ,安裝命令如下:

 pip install records 

安裝過程如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。


首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

Records 操作數據的步驟非常的簡單,如下:

  1. 連接數據庫,返回 DB 數據庫對象。
  2. 使用 query 方法執行 SQL 語句。

創建表

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

插入數據

Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


批量插入

SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


數據查詢

我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:

  • as_dict=True:參數轉成字典形式。
  • as_ordereddict=True:轉成排序字典形式。
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


字段獲取

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

執行上述代碼,輸出結果如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


支持數據庫事務

數據庫事務是經常需要使用到的數據庫操作,他通常是為了保持數據原子性和一致性。

比如商品銷量與存量的數據庫操作:

  1. 讀取商品銷量數據。
  2. 更新商品銷量增加1。
  3. 讀取商品存量數量。
  4. 更新商品存量減少1。

該場景下,我們須保證這 4 步均執行成功。如果第1步已經執行成功,但是到第 3 步發生了錯誤導致後面數據庫操作不能執行,會導致商品銷量與存量混亂。records 模塊提高了強大的數據庫事務支持,通過數據庫事務就能避免這種情況,如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

執行上述代碼,我們可以看到,當with中存在失敗的執行語句時,歷史執行SQL 不生效,如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


數據導出至xlsx

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

執行上述代碼,實現數據庫查詢結果的導出到xlsx中,如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


數據導出為yaml

"
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下

  • MySQL數據庫:mysql-connectorpymysql
  • PostgreSQL數據庫:psycopg2
  • Oracle數據庫 cx_Oracle
  • SQLite數據庫: sqlite3

但這樣卻使得我們不得不面臨一個問題,代碼中涉及不同數據庫,操作方式也不盡相同,容易出現代碼冗餘、不規範,風格不統一等等問題。

後來接觸到 Python SQLAlchemy(ORM框架)模塊,一定程度上解決了各數據庫的SQL差異,但 SQLAlchemy 在消除各數據庫SQL差異的同時卻會引入各框架CRUD的差異。而我們往往就具有一定的SQL基礎,如果一個框架強制用戶只能使用其規定的CRUD形式那反而增加用戶的學習成本,導致長學習曲線。

同時,個人為人直接地執行SQL而不是使用框架設定的CRUD不應當是一種低級的操作應當是一種被鼓厲的標準化行為。


遇到 Records

Records 是一個非常簡單且功能強大的庫,適用於大多數關係型數據庫的 原始SQL操作,三個字,強無敵

Records 的特點:

  • 基於 SQLAlchemy 和 Tablib 開發。
  • 方法非常簡單且統一。
  • 支持緩存查詢的數據.
  • 自動實現上下文管理器,不需要關注數據連接狀態。
  • 支持數據庫事務,保持數據的原子性和一致性。
  • 支持安全的參數化查詢,以安全的形式進行動態參數傳遞,防止 sql 語句不規範導致的安全問題;
  • 支持主流數據庫,如 RedShift, Postgres, MySQL, SQLite, Oracle, 和 MS-SQL

Records 安裝

我們在Windows 10 Python3環境下,使用pip進行安裝 ,安裝命令如下:

 pip install records 

安裝過程如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。


首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

Records 操作數據的步驟非常的簡單,如下:

  1. 連接數據庫,返回 DB 數據庫對象。
  2. 使用 query 方法執行 SQL 語句。

創建表

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

插入數據

Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


批量插入

SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


數據查詢

我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:

  • as_dict=True:參數轉成字典形式。
  • as_ordereddict=True:轉成排序字典形式。
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


字段獲取

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

執行上述代碼,輸出結果如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


支持數據庫事務

數據庫事務是經常需要使用到的數據庫操作,他通常是為了保持數據原子性和一致性。

比如商品銷量與存量的數據庫操作:

  1. 讀取商品銷量數據。
  2. 更新商品銷量增加1。
  3. 讀取商品存量數量。
  4. 更新商品存量減少1。

該場景下,我們須保證這 4 步均執行成功。如果第1步已經執行成功,但是到第 3 步發生了錯誤導致後面數據庫操作不能執行,會導致商品銷量與存量混亂。records 模塊提高了強大的數據庫事務支持,通過數據庫事務就能避免這種情況,如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

執行上述代碼,我們可以看到,當with中存在失敗的執行語句時,歷史執行SQL 不生效,如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


數據導出至xlsx

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

執行上述代碼,實現數據庫查詢結果的導出到xlsx中,如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


數據導出為yaml

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

除此之外,還支持導出為 json, xls, csv, pandas, html 等多種數據格式。


"
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下

  • MySQL數據庫:mysql-connectorpymysql
  • PostgreSQL數據庫:psycopg2
  • Oracle數據庫 cx_Oracle
  • SQLite數據庫: sqlite3

但這樣卻使得我們不得不面臨一個問題,代碼中涉及不同數據庫,操作方式也不盡相同,容易出現代碼冗餘、不規範,風格不統一等等問題。

後來接觸到 Python SQLAlchemy(ORM框架)模塊,一定程度上解決了各數據庫的SQL差異,但 SQLAlchemy 在消除各數據庫SQL差異的同時卻會引入各框架CRUD的差異。而我們往往就具有一定的SQL基礎,如果一個框架強制用戶只能使用其規定的CRUD形式那反而增加用戶的學習成本,導致長學習曲線。

同時,個人為人直接地執行SQL而不是使用框架設定的CRUD不應當是一種低級的操作應當是一種被鼓厲的標準化行為。


遇到 Records

Records 是一個非常簡單且功能強大的庫,適用於大多數關係型數據庫的 原始SQL操作,三個字,強無敵

Records 的特點:

  • 基於 SQLAlchemy 和 Tablib 開發。
  • 方法非常簡單且統一。
  • 支持緩存查詢的數據.
  • 自動實現上下文管理器,不需要關注數據連接狀態。
  • 支持數據庫事務,保持數據的原子性和一致性。
  • 支持安全的參數化查詢,以安全的形式進行動態參數傳遞,防止 sql 語句不規範導致的安全問題;
  • 支持主流數據庫,如 RedShift, Postgres, MySQL, SQLite, Oracle, 和 MS-SQL

Records 安裝

我們在Windows 10 Python3環境下,使用pip進行安裝 ,安裝命令如下:

 pip install records 

安裝過程如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。


首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

Records 操作數據的步驟非常的簡單,如下:

  1. 連接數據庫,返回 DB 數據庫對象。
  2. 使用 query 方法執行 SQL 語句。

創建表

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

插入數據

Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


批量插入

SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


數據查詢

我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:

  • as_dict=True:參數轉成字典形式。
  • as_ordereddict=True:轉成排序字典形式。
Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


字段獲取

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

執行上述代碼,輸出結果如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


支持數據庫事務

數據庫事務是經常需要使用到的數據庫操作,他通常是為了保持數據原子性和一致性。

比如商品銷量與存量的數據庫操作:

  1. 讀取商品銷量數據。
  2. 更新商品銷量增加1。
  3. 讀取商品存量數量。
  4. 更新商品存量減少1。

該場景下,我們須保證這 4 步均執行成功。如果第1步已經執行成功,但是到第 3 步發生了錯誤導致後面數據庫操作不能執行,會導致商品銷量與存量混亂。records 模塊提高了強大的數據庫事務支持,通過數據庫事務就能避免這種情況,如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

執行上述代碼,我們可以看到,當with中存在失敗的執行語句時,歷史執行SQL 不生效,如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


數據導出至xlsx

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

執行上述代碼,實現數據庫查詢結果的導出到xlsx中,如下:

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫


數據導出為yaml

Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

除此之外,還支持導出為 json, xls, csv, pandas, html 等多種數據格式。


Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫

"

相關推薦

推薦中...