-
1 # 小小猿愛嘻嘻
-
2 # 軟體測試開發技術棧
對於操作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 我們還有其他選擇嗎?
遇見 RecordsRecords 是一個使用簡單且功能非常強大的庫,適用於絕大多數關係型資料庫的 原始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 等多種資料格式。 -
3 # 英文動畫學習屋
我需要一個連線Oracle MySQL,sqlserverSybase,db2,informix,postgresQL的。
-
4 # 0祥0子0
SQLAlchemy這種orm 針對不同的的資料庫呼叫不同底層第三方庫 相同的api不同的底層 介面卡模式 java也是一樣 orm都是這種思路
回覆列表
當然是有的,這裡推薦一個第三方庫—SQLAlchemy,一個著名的Python ORM框架,基於物件關係模型對資料庫進行操作(增刪改查等),支援目前主流的關係型資料庫,包括Oracle、Mysql、Sqlite等,感興趣的朋友可以嘗試一下:
01安裝SQLAlchemy這個非常簡單,開啟cmd視窗,直接輸入命令“pip install sqlalchemy”即可,程式會自動檢測相關依賴包並進行安裝:
02操作MySQL資料庫安裝完成後,我們就可以直接使用SQLAlchemy框架操作MySQL資料庫了(這裡需要下載pymysql模組),測試程式碼如下,以簡單的資料查詢為例,基本思想先建立一個數據庫連線,然後定義一個物件類(對應需要操作的資料表),最後再執行相關查詢即可,這裡不需要編寫SQL語句,框架自帶有詳細的查詢函式,功能非常強大:
增刪改資料也非常容易,在上面資料庫連線的基礎上,直接呼叫相關修改函式就行,這裡需要注意的是,一定要進行commit提交,否則資料庫不會更新:
03操作Oracle、SQLite資料庫因為是基於ORM物件模型對資料庫進行操作,因此在資料表結構不變的情況下,只需修改資料庫連線的URL就行,其他程式碼不需修改也能正常進行資料庫操作:
Oracle資料庫:依賴cx_oracle(需要單獨下載)
engine = create_engine("oracle://Username:Password@IP:Port/DBName")SQLite資料庫:內建驅動,直接使用
engine = create_engine("sqlite:///SQLite資料庫路徑")至此,我們就完成了利用SQLAlchemy操作Oracle、Mysql、Sqlite資料庫。總的來說,整個過程非常簡單,只要你熟悉一下使用過程,很快就能掌握的,官方也自帶有非常詳細的入門教程,非常適合初學者學習,感興趣的話,可以搜一下,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言進行補充。