回覆列表
  • 1 # 小小猿愛嘻嘻

    當然是有的,這裡推薦一個第三方庫—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資料庫。總的來說,整個過程非常簡單,只要你熟悉一下使用過程,很快就能掌握的,官方也自帶有非常詳細的入門教程,非常適合初學者學習,感興趣的話,可以搜一下,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言進行補充。

  • 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 我們還有其他選擇嗎?

    遇見 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 等多種資料格式。

  • 3 # 英文動畫學習屋

    我需要一個連線Oracle MySQL,sqlserverSybase,db2,informix,postgresQL的。

  • 4 # 0祥0子0

    SQLAlchemy這種orm 針對不同的的資料庫呼叫不同底層第三方庫 相同的api不同的底層 介面卡模式 java也是一樣 orm都是這種思路

  • 中秋節和大豐收的關聯?
  • 可以用於眼部肌肉顫動的滴眼液是什麼?