使用 SQLObject orm 庫快速將接口數據存入數據庫
文章目錄
- 使用 SQLObject orm 庫快速將接口數據存入數據庫
- 背景
- orm python 版本都有哪些?
- SQLObject 簡單的使用
背景
因為測試需要,要將百萬條數據接口查詢數據存入數據庫中,為了減少 mysql server 側的操作,是用來 docker 部署了一個服務,如果想將接口 json 數據快速存入數據庫中,使用 orm 非常有必要;
orm python 版本都有哪些?
-
SQLAlchemy:
- 功能強大且靈活。
- 支持多種數據庫后端,如 SQLite, MySQL, PostgreSQL, Oracle, SQL Server 等。
- 提供了完整的 SQL 抽象層,允許你使用 Python 表達式來編寫 SQL 查詢。
- 支持 ORM, Core Expression Language, SQL Expression Language 和 Alembic(遷移工具)。
- 廣泛用于各種大型項目中。
-
Django ORM:
- Django 框架自帶的 ORM。
- 對于 Django 項目來說,它非常集成且易于使用。
- 提供了豐富的查詢 API 和關系管理功能。
- 抽象了 SQL 的復雜性,使得數據庫操作變得簡單直觀。
- 不像 SQLAlchemy 那么靈活,但足夠滿足大多數 Django 項目的需求。
-
Peewee:
- 小型、輕量級的 ORM。
- 支持多種數據庫后端。
- 提供了簡潔明了的 API。
- 非常適合小型到中型項目。
-
PonyORM:
- 提供了強大的查詢 API,支持鏈式調用和 Pythonic 語法。
- 支持數據庫遷移。
- 提供了 ORM、LINQ 和 SQL 之間的混合編程。
- 專注于易用性和性能。
-
SQLObject:
- 另一個輕量級的 ORM。
- 提供了簡單的 API 來定義數據庫模型和執行查詢。
- 適用于小型到中型項目。
-
Storm:
- 基于 Twisted 的 ORM。
- 提供了異步數據庫訪問。
- 適用于需要高性能異步 I/O 的項目。
-
Elixir:
- 基于 SQLAlchemy 的輕量級 ORM,旨在提供更簡潔的 API。
- 適用于那些喜歡 SQLAlchemy 但希望 API 更簡潔的開發者。
從對比來看越簡單越好,就選擇了 sqlobject
SQLObject 簡單的使用
以下是如何使用 SQLObject
的基本步驟:
- 安裝 SQLObject
首先,你需要安裝 SQLObject
。你可以使用 pip
,如果使用 pymysql 驅動,還需要安裝下
pip install SQLObject
- 定義模型
接下來,你需要定義你的數據庫模型。這些模型將映射到數據庫中的表。
from sqlobject import SQLObject, StringCol, IntColclass Person(SQLObject):name = StringCol(length=50)age = IntCol()# 這里可以定義其他方法和屬性# 連接到數據庫(在這里是 SQLite,但 SQLObject 也支持其他數據庫)
Person.setConnection('sqlite:/:memory:')# 創建表(如果尚不存在)
Person.createTable(ifNotExists=True)
- 插入數據
你可以使用 Python 對象來插入數據。
john = Person(name='John Doe', age=30)
john.set(name='John Smith', age=31) # 另一種設置屬性的方法
john.save() # 將對象保存到數據庫
- 查詢數據
你可以使用 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)
- 更新和刪除數據
你可以使用 Python 對象的方法來更新和刪除數據。
# 更新數據
john = Person.byName('John Smith')
john.set(age=32)
john.save()# 刪除數據
john.destroySelf()
- 注意
- 在生產環境中,你可能希望使用更持久的數據庫連接,而不是內存中的 SQLite 數據庫。
- 你還可以定義關系(如一對多、多對多等),并在查詢中使用它們。
- SQLObject 提供了豐富的 API 來處理更復雜的查詢和數據庫操作。
- 你可以查看 SQLObject 的官方文檔以獲取更多詳細信息和示例:https://sqlobject.org/sqlobject/
- 官方文檔包括教程、API 參考、常見問題解答等。
有一點比較惡心的是 SQLObject 的相關文檔很少