欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

Python中有沒有操作OracleMysqlSqlite的通用方法或者第三方庫

錢斌斌2年前26瀏覽0評論
Python中有沒有操作OracleMysqlSqlite的通用方法或者第三方庫?

對于操作Oracle、Mysql、Sqlite等多種關系型數據庫,推薦使用 Python Records模塊 ,其適用于絕大多數關系型數據庫的原始SQL操作,同時支持將查詢結果導出到xlsx, xls, csv, json, yaml, pandas, html等文件中,強無敵!

我們在開發過程中經常會涉及與數據庫進行交互,比如題目中提到的MySQL、Oracle、PostgreSQL、Sqlite關系型數據庫。較以往,我們會選擇其對應的Python 第三方模塊,實現相關數據庫的增刪改查等操作,不同數據庫對應的Python模塊如下:

Oracle數據庫: cx_OracleMySQL數據庫:mysql-connector,pymysqlPostgreSQL數據庫:psycopg2SQLite數據庫: sqlite3

就像,問題到提到的那樣,當同一程序中需要操作不同的數據庫時,有沒有一種通用的方式或者模塊,可以實現不同數據的各種操作呢?否則,我們將不得不面臨一個問題,當代碼中涉及不同數據庫操作時,容易出現代碼冗余、不規范,風格不統一等等問題。

那么究竟有沒有一種通用而優雅的支持各種數據庫操作的庫呢?答案是肯定,SQLAlchemy庫。

后來接觸到 Python SQLAlchemy(ORM框架),其一定程度上解決了各數據庫的SQL差異,可是 SQLAlchemy 在消除不同數據庫間SQL差異的同時,引入了各框架CRUD的差異。可開發人員往往是具備一定的SQL基礎。假如一個框架強制用戶只能使用它規定的CRUD形式,那反而增加用戶的學習成本,導致學習曲線增長。

當然你也可以嘗試SQLAlchemy,那么除了SQLAlchemy 我們還有其他選擇嗎?

遇見 Records

Records 是一個使用簡單且功能非常強大的庫,適用于絕大多數關系型數據庫的 原始SQL操作。強無敵!

Records 有哪些特點呢,如下:

其基于 SQLAlchemy 與 Tablib 開發。使用簡單且統一。支持緩存查詢的數據。無需關注數據連接狀態,自動實現上下文管理器。支持數據庫事務,能夠保持數據的原子性和一致性。支持安全的參數化查詢,防止 因SQL語句不規范而導致安全問題發生。支持主流數據庫,如 Oracle, MySQL,Postgres,SQLite等關系型數據庫。御劍 Records

接下來,我們在Windows 10的Python3環境中,使用pip方式進行安裝Records,命令如下:

pip install records

安裝過程非常簡單,如下:

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

關于不同數據庫的統一連接方式,如下:

Records 基于 SQLAlchemy 實現的,因此數據庫的統一連接方式與SQLAlchemy 相同,如下

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

連接數據庫,獲取數據庫對象。使用數據庫對象的 query 方法執行增刪改查SQL 語句。根據開發需求,使用 all方法獲取查詢結果進行處理。

說了這么多,接下來,讓我們了解下如何使用Records 完成數據庫的增刪改查等操作。

創建表數據寫入

Records 支持安全的參數化,我們可以使用 :variable 定義變量,然后通過傳入參數完成動態傳值,對于需要動態加載數據的場景來說非常的高效,如批量入庫操作。

數據批量寫入

我們使用SQL 語句實現數據批量入庫時,操作比較冗余, Records 模塊提供了 bulk_query 方法能夠非常簡潔的插入數據和更新數據,如下。

數據查詢

我們可以通過 all 方法獲取執行SQL所返回的全部記錄,first 方法是獲取第一條記錄。

字段獲取

我們可以像操作字典那樣,直接獲取對應字段的查詢結果,如下:

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

我們可以將查詢的結果直接導出到xlsx當中,如下:

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

數據導出為yaml

我們也可以將查詢結果直接導出到yaml文件中,如下:

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