'Python Requests作者另一神作,Records通用而優雅的數據庫訪問庫'
我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下
- MySQL數據庫:mysql-connector,pymysql
- 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
安裝過程如下:
我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下
- MySQL數據庫:mysql-connector,pymysql
- 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
安裝過程如下:
接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。
首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下
我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下
- MySQL數據庫:mysql-connector,pymysql
- 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
安裝過程如下:
接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。
首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下
Records 操作數據的步驟非常的簡單,如下:
- 連接數據庫,返回 DB 數據庫對象。
- 使用 query 方法執行 SQL 語句。
創建表
我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下
- MySQL數據庫:mysql-connector,pymysql
- 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
安裝過程如下:
接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。
首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下
Records 操作數據的步驟非常的簡單,如下:
- 連接數據庫,返回 DB 數據庫對象。
- 使用 query 方法執行 SQL 語句。
創建表
插入數據
Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。
我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下
- MySQL數據庫:mysql-connector,pymysql
- 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
安裝過程如下:
接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。
首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下
Records 操作數據的步驟非常的簡單,如下:
- 連接數據庫,返回 DB 數據庫對象。
- 使用 query 方法執行 SQL 語句。
創建表
插入數據
Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。
批量插入
SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。
我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下
- MySQL數據庫:mysql-connector,pymysql
- 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
安裝過程如下:
接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。
首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下
Records 操作數據的步驟非常的簡單,如下:
- 連接數據庫,返回 DB 數據庫對象。
- 使用 query 方法執行 SQL 語句。
創建表
插入數據
Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。
批量插入
SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。
數據查詢
我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:
- as_dict=True:參數轉成字典形式。
- as_ordereddict=True:轉成排序字典形式。
我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下
- MySQL數據庫:mysql-connector,pymysql
- 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
安裝過程如下:
接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。
首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下
Records 操作數據的步驟非常的簡單,如下:
- 連接數據庫,返回 DB 數據庫對象。
- 使用 query 方法執行 SQL 語句。
創建表
插入數據
Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。
批量插入
SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。
數據查詢
我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:
- as_dict=True:參數轉成字典形式。
- as_ordereddict=True:轉成排序字典形式。
字段獲取
我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下
- MySQL數據庫:mysql-connector,pymysql
- 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
安裝過程如下:
接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。
首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下
Records 操作數據的步驟非常的簡單,如下:
- 連接數據庫,返回 DB 數據庫對象。
- 使用 query 方法執行 SQL 語句。
創建表
插入數據
Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。
批量插入
SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。
數據查詢
我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:
- as_dict=True:參數轉成字典形式。
- as_ordereddict=True:轉成排序字典形式。
字段獲取
執行上述代碼,輸出結果如下:
我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下
- MySQL數據庫:mysql-connector,pymysql
- 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
安裝過程如下:
接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。
首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下
Records 操作數據的步驟非常的簡單,如下:
- 連接數據庫,返回 DB 數據庫對象。
- 使用 query 方法執行 SQL 語句。
創建表
插入數據
Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。
批量插入
SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。
數據查詢
我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:
- as_dict=True:參數轉成字典形式。
- as_ordereddict=True:轉成排序字典形式。
字段獲取
執行上述代碼,輸出結果如下:
支持數據庫事務
數據庫事務是經常需要使用到的數據庫操作,他通常是為了保持數據原子性和一致性。
比如商品銷量與存量的數據庫操作:
- 讀取商品銷量數據。
- 更新商品銷量增加1。
- 讀取商品存量數量。
- 更新商品存量減少1。
該場景下,我們須保證這 4 步均執行成功。如果第1步已經執行成功,但是到第 3 步發生了錯誤導致後面數據庫操作不能執行,會導致商品銷量與存量混亂。records 模塊提高了強大的數據庫事務支持,通過數據庫事務就能避免這種情況,如下:
我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下
- MySQL數據庫:mysql-connector,pymysql
- 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
安裝過程如下:
接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。
首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下
Records 操作數據的步驟非常的簡單,如下:
- 連接數據庫,返回 DB 數據庫對象。
- 使用 query 方法執行 SQL 語句。
創建表
插入數據
Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。
批量插入
SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。
數據查詢
我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:
- as_dict=True:參數轉成字典形式。
- as_ordereddict=True:轉成排序字典形式。
字段獲取
執行上述代碼,輸出結果如下:
支持數據庫事務
數據庫事務是經常需要使用到的數據庫操作,他通常是為了保持數據原子性和一致性。
比如商品銷量與存量的數據庫操作:
- 讀取商品銷量數據。
- 更新商品銷量增加1。
- 讀取商品存量數量。
- 更新商品存量減少1。
該場景下,我們須保證這 4 步均執行成功。如果第1步已經執行成功,但是到第 3 步發生了錯誤導致後面數據庫操作不能執行,會導致商品銷量與存量混亂。records 模塊提高了強大的數據庫事務支持,通過數據庫事務就能避免這種情況,如下:
執行上述代碼,我們可以看到,當with中存在失敗的執行語句時,歷史執行SQL 不生效,如下:
我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下
- MySQL數據庫:mysql-connector,pymysql
- 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
安裝過程如下:
接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。
首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下
Records 操作數據的步驟非常的簡單,如下:
- 連接數據庫,返回 DB 數據庫對象。
- 使用 query 方法執行 SQL 語句。
創建表
插入數據
Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。
批量插入
SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。
數據查詢
我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:
- as_dict=True:參數轉成字典形式。
- as_ordereddict=True:轉成排序字典形式。
字段獲取
執行上述代碼,輸出結果如下:
支持數據庫事務
數據庫事務是經常需要使用到的數據庫操作,他通常是為了保持數據原子性和一致性。
比如商品銷量與存量的數據庫操作:
- 讀取商品銷量數據。
- 更新商品銷量增加1。
- 讀取商品存量數量。
- 更新商品存量減少1。
該場景下,我們須保證這 4 步均執行成功。如果第1步已經執行成功,但是到第 3 步發生了錯誤導致後面數據庫操作不能執行,會導致商品銷量與存量混亂。records 模塊提高了強大的數據庫事務支持,通過數據庫事務就能避免這種情況,如下:
執行上述代碼,我們可以看到,當with中存在失敗的執行語句時,歷史執行SQL 不生效,如下:
數據導出至xlsx
我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下
- MySQL數據庫:mysql-connector,pymysql
- 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
安裝過程如下:
接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。
首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下
Records 操作數據的步驟非常的簡單,如下:
- 連接數據庫,返回 DB 數據庫對象。
- 使用 query 方法執行 SQL 語句。
創建表
插入數據
Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。
批量插入
SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。
數據查詢
我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:
- as_dict=True:參數轉成字典形式。
- as_ordereddict=True:轉成排序字典形式。
字段獲取
執行上述代碼,輸出結果如下:
支持數據庫事務
數據庫事務是經常需要使用到的數據庫操作,他通常是為了保持數據原子性和一致性。
比如商品銷量與存量的數據庫操作:
- 讀取商品銷量數據。
- 更新商品銷量增加1。
- 讀取商品存量數量。
- 更新商品存量減少1。
該場景下,我們須保證這 4 步均執行成功。如果第1步已經執行成功,但是到第 3 步發生了錯誤導致後面數據庫操作不能執行,會導致商品銷量與存量混亂。records 模塊提高了強大的數據庫事務支持,通過數據庫事務就能避免這種情況,如下:
執行上述代碼,我們可以看到,當with中存在失敗的執行語句時,歷史執行SQL 不生效,如下:
數據導出至xlsx
執行上述代碼,實現數據庫查詢結果的導出到xlsx中,如下:
我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下
- MySQL數據庫:mysql-connector,pymysql
- 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
安裝過程如下:
接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。
首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下
Records 操作數據的步驟非常的簡單,如下:
- 連接數據庫,返回 DB 數據庫對象。
- 使用 query 方法執行 SQL 語句。
創建表
插入數據
Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。
批量插入
SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。
數據查詢
我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:
- as_dict=True:參數轉成字典形式。
- as_ordereddict=True:轉成排序字典形式。
字段獲取
執行上述代碼,輸出結果如下:
支持數據庫事務
數據庫事務是經常需要使用到的數據庫操作,他通常是為了保持數據原子性和一致性。
比如商品銷量與存量的數據庫操作:
- 讀取商品銷量數據。
- 更新商品銷量增加1。
- 讀取商品存量數量。
- 更新商品存量減少1。
該場景下,我們須保證這 4 步均執行成功。如果第1步已經執行成功,但是到第 3 步發生了錯誤導致後面數據庫操作不能執行,會導致商品銷量與存量混亂。records 模塊提高了強大的數據庫事務支持,通過數據庫事務就能避免這種情況,如下:
執行上述代碼,我們可以看到,當with中存在失敗的執行語句時,歷史執行SQL 不生效,如下:
數據導出至xlsx
執行上述代碼,實現數據庫查詢結果的導出到xlsx中,如下:
數據導出為yaml
我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下
- MySQL數據庫:mysql-connector,pymysql
- 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
安裝過程如下:
接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。
首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下
Records 操作數據的步驟非常的簡單,如下:
- 連接數據庫,返回 DB 數據庫對象。
- 使用 query 方法執行 SQL 語句。
創建表
插入數據
Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。
批量插入
SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。
數據查詢
我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:
- as_dict=True:參數轉成字典形式。
- as_ordereddict=True:轉成排序字典形式。
字段獲取
執行上述代碼,輸出結果如下:
支持數據庫事務
數據庫事務是經常需要使用到的數據庫操作,他通常是為了保持數據原子性和一致性。
比如商品銷量與存量的數據庫操作:
- 讀取商品銷量數據。
- 更新商品銷量增加1。
- 讀取商品存量數量。
- 更新商品存量減少1。
該場景下,我們須保證這 4 步均執行成功。如果第1步已經執行成功,但是到第 3 步發生了錯誤導致後面數據庫操作不能執行,會導致商品銷量與存量混亂。records 模塊提高了強大的數據庫事務支持,通過數據庫事務就能避免這種情況,如下:
執行上述代碼,我們可以看到,當with中存在失敗的執行語句時,歷史執行SQL 不生效,如下:
數據導出至xlsx
執行上述代碼,實現數據庫查詢結果的導出到xlsx中,如下:
數據導出為yaml
除此之外,還支持導出為 json, xls, csv, pandas, html 等多種數據格式。
我們在開發過程中經常涉及與數據庫進行交互,比如MySQL、Oracle、PostgreSQL、Sqlite,一般,我們使用其對應的Python 第三方模塊,實現相關數據庫操作,如下
- MySQL數據庫:mysql-connector,pymysql
- 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
安裝過程如下:
接下來,我們以SQLite數據庫為例,介紹如何使用 Records 進行數據庫CRUD操作。
首先,因 Records 是基於 SQLAlchemy 實現的,所以數據庫鏈接方式參考SQLAlchemy ,如下
Records 操作數據的步驟非常的簡單,如下:
- 連接數據庫,返回 DB 數據庫對象。
- 使用 query 方法執行 SQL 語句。
創建表
插入數據
Records 支持安全參數化,使用 :variable 定義變量,通過參數傳入完成動態傳值,非常適合需要動態加載數據的場景,如批量入庫操作。
批量插入
SQL 語句實現數據的批量入庫時,操作比較冗餘,如果入庫數據是動態變化的,代碼的複雜度變得更高。 Records 提供的 bulk_query 方法能便捷的插入和更新數據。
數據查詢
我們可以通過 all 方法獲取所有的記錄,first 方法獲取第一條記錄,支持參數如下:
- as_dict=True:參數轉成字典形式。
- as_ordereddict=True:轉成排序字典形式。
字段獲取
執行上述代碼,輸出結果如下:
支持數據庫事務
數據庫事務是經常需要使用到的數據庫操作,他通常是為了保持數據原子性和一致性。
比如商品銷量與存量的數據庫操作:
- 讀取商品銷量數據。
- 更新商品銷量增加1。
- 讀取商品存量數量。
- 更新商品存量減少1。
該場景下,我們須保證這 4 步均執行成功。如果第1步已經執行成功,但是到第 3 步發生了錯誤導致後面數據庫操作不能執行,會導致商品銷量與存量混亂。records 模塊提高了強大的數據庫事務支持,通過數據庫事務就能避免這種情況,如下:
執行上述代碼,我們可以看到,當with中存在失敗的執行語句時,歷史執行SQL 不生效,如下:
數據導出至xlsx
執行上述代碼,實現數據庫查詢結果的導出到xlsx中,如下:
數據導出為yaml
除此之外,還支持導出為 json, xls, csv, pandas, html 等多種數據格式。