国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【SQLAlchemy】ORM 關系映射框架了解與初步使用

2023-01-31 12:06 作者:阿提艾斯  | 我要投稿

1. 認識SQLAlchemy

SQLAlchemy是Python SQL工具包對象關系映射器。它專為高校和高性能的數(shù)據(jù)庫訪問而設計。它支持連接SQLite、PostgreSQL、Oracle、MySQL/MariaDB、Microsoft SQL Server等等。

它提供了兩種主要的使用模式:

  • SQLAlchemy Core,通過Table構造函數(shù)初始化Table對象。

  • ORM,通過定義一個類,繼承declarative_base這個特殊基類(SQLAlchemy 2.0j繼承的是DeclarativeBase,注意看官方文檔),declarative_base會把元數(shù)據(jù)容器(類)和映射器(數(shù)據(jù)表)結(jié)合在一起。

目前官方SQLAlchemy最新版本為2.0.0。

無論使用哪種方式,都需要連接到數(shù)據(jù)庫。需要創(chuàng)建一個SQLAlchemy引擎,創(chuàng)建引擎如下:


2.?使用ORM

以下例子使用SQLAlchemy 1.4.32實驗,其他版本參考官方文檔。

orm使用的類應該滿足如下要求:

  • 繼承自declarative_base對象

  • 包含__tablename__,數(shù)據(jù)庫表名稱

  • 包含一個或多個屬性,它們都是Column對象

  • 確保一個或多個屬性組成主鍵

2.1 聲明模塊

每個表都被定義為一個模塊,在項目中只需要聲明一次,它包含了數(shù)據(jù)庫表的信息,比如表名稱、列名稱、列屬性等元數(shù)據(jù)。

relationship()表示在兩個ORM類之間進行聯(lián)動,比如User的addresses屬性關聯(lián)到Address,Address的user屬性關聯(lián)到User,更深層的用法待補充。


2.2 創(chuàng)建引擎

引擎能為我們創(chuàng)建新的數(shù)據(jù)庫連接,它是維持在連接池里的,方便復用。

echo=True,會將表創(chuàng)建語句記錄在標準輸出里。程序會自動創(chuàng)建test.sqlite數(shù)據(jù)庫文件。

運行日志如下:


2.3 插入數(shù)據(jù)

創(chuàng)建的模塊實例如果要持久化到數(shù)據(jù)庫中,需要調(diào)用會話Session,Session會和數(shù)據(jù)庫進行交互,它封裝了一個事務,這個事務將一直保持打開狀態(tài),直到會話提交或回滾??聪路嚼樱?/p>

session.add_all可以一次性添加多個對象實例。

session.add一次添加一個實例。


從日志看就是提交了一個事務,從數(shù)據(jù)庫表里看用戶表和地址表數(shù)據(jù)都插入成功了,

2.4 查詢數(shù)據(jù)

2.4.1 單表查詢

查詢數(shù)據(jù)使用到sqlalchemy的select方法,where中指明條件,session.scalars會返回一個可迭代對象ScalarResult。

下方為查詢語句和查詢結(jié)果:

2.4.2 多表查詢

查詢xiaoliu的地址信息

查詢結(jié)果:

2.5 更新數(shù)據(jù)

例子:

把xiaowu的全名修改為Zhang Xiaowu Hahaha,地址追加"xiaowu@ll.com"

運行結(jié)果:


2.6 刪除數(shù)據(jù)

例子:刪除xiaowu的賬號和地址信息

運行結(jié)果:xiaowu的賬號信息和地址信息均刪除。


3. 參考資料

  • SQLAlchemy官方文檔:https://www.sqlalchemy.org/

  • Python庫之SQLAlchemy:?https://zhuanlan.zhihu.com/p/265224273



【SQLAlchemy】ORM 關系映射框架了解與初步使用的評論 (共 條)

分享到微博請遵守國家法律
都江堰市| 三穗县| 惠来县| 邵武市| 武汉市| 诏安县| 遂平县| 永春县| 抚顺县| 乌拉特中旗| 孝昌县| 鄱阳县| 阿荣旗| 墨玉县| 三亚市| 公主岭市| 怀安县| 康乐县| 于都县| 繁峙县| 红原县| 新安县| 恭城| 福鼎市| 台中市| 池州市| 嘉义市| 宽甸| 海林市| 崇州市| 新巴尔虎右旗| 乌什县| 镶黄旗| 许昌市| 镇原县| 长治县| 新泰市| 翁源县| 新宾| 安塞县| 和平区|