【Python】使用 SQLObject orm 庫快速將接口數據存入數據庫

使用 SQLObject orm 庫快速將接口數據存入數據庫

文章目錄

  • 使用 SQLObject orm 庫快速將接口數據存入數據庫
    • 背景
      • orm python 版本都有哪些?
    • SQLObject 簡單的使用

背景

因為測試需要,要將百萬條數據接口查詢數據存入數據庫中,為了減少 mysql server 側的操作,是用來 docker 部署了一個服務,如果想將接口 json 數據快速存入數據庫中,使用 orm 非常有必要;

orm python 版本都有哪些?

  1. SQLAlchemy

    • 功能強大且靈活。
    • 支持多種數據庫后端,如 SQLite, MySQL, PostgreSQL, Oracle, SQL Server 等。
    • 提供了完整的 SQL 抽象層,允許你使用 Python 表達式來編寫 SQL 查詢。
    • 支持 ORM, Core Expression Language, SQL Expression Language 和 Alembic(遷移工具)。
    • 廣泛用于各種大型項目中。
  2. Django ORM

    • Django 框架自帶的 ORM。
    • 對于 Django 項目來說,它非常集成且易于使用。
    • 提供了豐富的查詢 API 和關系管理功能。
    • 抽象了 SQL 的復雜性,使得數據庫操作變得簡單直觀。
    • 不像 SQLAlchemy 那么靈活,但足夠滿足大多數 Django 項目的需求。
  3. Peewee

    • 小型、輕量級的 ORM。
    • 支持多種數據庫后端。
    • 提供了簡潔明了的 API。
    • 非常適合小型到中型項目。
  4. PonyORM

    • 提供了強大的查詢 API,支持鏈式調用和 Pythonic 語法。
    • 支持數據庫遷移。
    • 提供了 ORM、LINQ 和 SQL 之間的混合編程。
    • 專注于易用性和性能。
  5. SQLObject

    • 另一個輕量級的 ORM。
    • 提供了簡單的 API 來定義數據庫模型和執行查詢。
    • 適用于小型到中型項目。
  6. Storm

    • 基于 Twisted 的 ORM。
    • 提供了異步數據庫訪問。
    • 適用于需要高性能異步 I/O 的項目。
  7. Elixir

    • 基于 SQLAlchemy 的輕量級 ORM,旨在提供更簡潔的 API。
    • 適用于那些喜歡 SQLAlchemy 但希望 API 更簡潔的開發者。

從對比來看越簡單越好,就選擇了 sqlobject

SQLObject 簡單的使用

以下是如何使用 SQLObject 的基本步驟:

  1. 安裝 SQLObject

首先,你需要安裝 SQLObject。你可以使用 pip,如果使用 pymysql 驅動,還需要安裝下

pip install SQLObject
  1. 定義模型

接下來,你需要定義你的數據庫模型。這些模型將映射到數據庫中的表。

from sqlobject import SQLObject, StringCol, IntColclass Person(SQLObject):name = StringCol(length=50)age = IntCol()# 這里可以定義其他方法和屬性# 連接到數據庫(在這里是 SQLite,但 SQLObject 也支持其他數據庫)
Person.setConnection('sqlite:/:memory:')# 創建表(如果尚不存在)
Person.createTable(ifNotExists=True)
  1. 插入數據

你可以使用 Python 對象來插入數據。

john = Person(name='John Doe', age=30)
john.set(name='John Smith', age=31)  # 另一種設置屬性的方法
john.save()  # 將對象保存到數據庫
  1. 查詢數據

你可以使用 SQLObject 的查詢 API 來查詢數據。

# 查詢所有 Person 對象
people = Person.select()
for person in people:print(person.name, person.age)# 使用條件查詢
thirty_year_olds = Person.selectBy(age=30)
for person in thirty_year_olds:print(person.name)
  1. 更新和刪除數據

你可以使用 Python 對象的方法來更新和刪除數據。

# 更新數據
john = Person.byName('John Smith')
john.set(age=32)
john.save()# 刪除數據
john.destroySelf()
  1. 注意
  • 在生產環境中,你可能希望使用更持久的數據庫連接,而不是內存中的 SQLite 數據庫。
  • 你還可以定義關系(如一對多、多對多等),并在查詢中使用它們。
  • SQLObject 提供了豐富的 API 來處理更復雜的查詢和數據庫操作。
  • 你可以查看 SQLObject 的官方文檔以獲取更多詳細信息和示例:https://sqlobject.org/sqlobject/
  • 官方文檔包括教程、API 參考、常見問題解答等。

有一點比較惡心的是 SQLObject 的相關文檔很少

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/23331.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23331.shtml
英文地址,請注明出處:http://en.pswp.cn/web/23331.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Doris insert into 插入語句執行成功,且select查詢成功,返回結果不報錯,但查不到該插入數據

問題:Doris insert into 正常執行成功,select 查詢也執行成功,但查不到該寫入數據 原因:由于有其他 insert commit 事務待提交且該任務處于鎖的狀態,導致不斷在回滾,進而造成其他的insert into 語句也執行成…

26 - 超過5名學生的課(高頻 SQL 50 題基礎版)

26 - 超過5名學生的課 select class fromCourses group byclass havingcount(*)>5;

Seed-TTS語音編輯有多強?對比實測結果讓你驚嘆!

GLM-4-9B 開源系列模型 前言 就在最近,ByteDance的研究人員最近推出了一系列名為Seed-TTS的大規模自回歸文本轉語音(TTS)模型,能夠合成幾乎與人類語音無法區分的高質量語音。那么Seed-TTS的表現究竟有多強呢?讓我們一起來感受下Seed-TTS帶來的驚喜吧! 介紹Seed-TTS…

Java并發包中的鎖升級

在Java中,特別是ReentrantLock和synchronized關鍵字的實現中,鎖的升級通常涉及到從無鎖狀態到偏向鎖、再升級到輕量級鎖,最后可能升級到重量級鎖的過程。這一系列過程是為了減少鎖帶來的開銷,提高并發效率。 偏向鎖(Bi…

如何用手寫代碼實現JavaScript中的reduce函數?

在JavaScript中,Array.prototype.reduce() 是一個內置方法,它遍歷數組中的每個元素,并將它們累積成一個單一的返回值。我們可以自己編寫一個類似的函數來模擬這個過程。 下面是一個簡單的手寫實現例子: function myReduce(arr, …

組裝服務器重裝linux系統【idrac集成戴爾遠程控制卡】

🍁博主簡介: 🏅云計算領域優質創作者 🏅2022年CSDN新星計劃python賽道第一名 🏅2022年CSDN原力計劃優質作者 🏅阿里云ACE認證高級工程師 🏅阿里云開發者社區專…

Vue 跨平臺性能優化十法

Vue.js 開發能夠同時運行在不同平臺(如 Web、移動平臺和桌面平臺)的應用程序。以下是一些常見的跨平臺解決方案: 1. 使用 Vue.js 官方發布的框架: Vue.js:主要用于 Web 開發。 Vue Native:使用 Vue 語法開…

數據結構 | 超詳細講解七大排序(C語言實現,含動圖,多方法!)

目錄 ?編輯 排序的概念 常見排序算法 ?編輯 1.冒泡排序 🍹圖解 🥳代碼實現 🤔時間復雜度 2.插入排序 🍹圖解 🌴深度剖析 🍎代碼思路 🥳代碼實現 🤔時間復雜度 3.希爾…

2024 年適用于 Linux 的 5 個微軟 Word 替代品

對于那些最近由于隱私問題或其他原因而轉向 Linux 的用戶來說,可能很難替換他們最喜歡的、不在 Linux 操作系統上運行的應用程序。 尋找流行程序的合適替代品可能會成為一項挑戰,而且并不是每個人都準備好花費大量時間來嘗試弄清楚什么可以與他們在 Win…

讀書筆記|《把自己變成稀缺資產》:我們都擁有100分的欲望,卻只有1分的耐心。

哈嘍,你好啊,我是雷工! 最近在讀一本書《把自己變成稀缺資產》,其中一章講到耐心的重要性,很有共鳴。 當今社會,生活節奏越來越快,我們都在急于求成的追求結果,對過程越來越缺乏耐…

C++核心編程友元的應用

文章目錄 1.友元1.什么是友元2.全局函數做友元2.類做友元3.成員函數做友元 1.友元 1.什么是友元 在C中,友元(friend)是一種允許一個類或函數訪問另一個類的非公有(private 或 protected)成員的機制。這種機制打破了類…

系統研發安全漏洞

軟件安全漏洞指的是軟件中存在的具體缺陷或疏忽,這些缺陷或疏忽能夠被攻擊者利用并執行一些惡意行為。這些行為包括但不限于泄露或修改敏感信息、干擾或銷毀系統、接管計算機系統或程序權限等。與大眾熟悉的軟件缺陷(Bug)相比,安全…

Mysql中表的常用約束

在MySQL表中常用的約束有以下幾種: 1. 主鍵約束(Primary Key Constraint):用于標識表中的唯一記錄。一個表只能有一個主鍵,主鍵列不能有重復值,也不能為NULL。 2. 唯一約束(Unique Constraint…

2024050402-重學 Java 設計模式《實戰責任鏈模式》

重學 Java 設計模式:實戰責任鏈模式「模擬618電商大促期間,項目上線流程多級負責人審批場景」 一、前言 場地和場景的重要性 射擊🏹需要去靶場學習、滑雪🏂需要去雪場體驗、開車🚗需要能上路實踐,而編程…

Scanpy(4)用與數據整合和批次處理

Scanpy包,用與數據整合和批次處理,包含批次效應的BBKNN算法和用于對比的ingest基礎算法比較,及其原理簡介。 1. 依賴: (1)數據集(全部需要掛VPN): PBMC:pbmc3k_processed()(需要下載);pbmc68k_reduced()(scanpy自帶)Pancreas(需要下載)(2)Python包:Scanp…

【Python】把xmind轉換為指定格式txt文本

人工智能訓練通常需要使用文本格式,xmind作為一種常規格式不好進行解析,那如何把xmind轉換為txt格式呢? 軟件信息 python python -v Python 3.9.13 (tags/v3.9.13:6de2ca5, May 17 2022, 16:36:42) [MSC v.1929 64 bit (AMD64)] on win32…

Python 包安裝及常用命令【python 入門】

背景: 近期看到一個項目,做微信只能機器人,服務是使用python搭建的,于是拷貝下來自己打算跑一跑,部署一下,可是自己又沒有python的經驗,于是各種查資料學習,跟著敲一敲,順…

Go 1.19.4 切片與子切片-Day 05

1. 切片 1.1 介紹 切片在Go中是一個引用類型,它包含三個組成部分:指向底層數組的指針(pointer)、切片的長度(length)以及切片的容量(capacity),這些信息共同構成了切片的…

單片機排水泵高壓方案

靈動微多顆算力高、高可靠性的通用系列和電機專用系列MCU,配合成熟的控制算法,覆蓋了包括洗衣機在內的各種大小家電市場。 RAMSUN提供的MM32 MCU種類較多,例如洗衣機內部的排水泵系統,排水泵控制首選電控高性價比產品MM32SPIN023…

JavaWeb_SpringBootWeb案例

環境搭建: 開發規范 接口風格-Restful: 統一響應結果-Result: 開發流程: 第一步應該根據需求定義表結構和定義接口文檔 注意: 本文代碼從上往下一直添加功能,后面的模塊下的代碼包括前面的模塊&#xff0c…