五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

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

【SQLAlchemy】ORM 關(guān)系映射框架了解與初步使用

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

1. 認識SQLAlchemy

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

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

  • SQLAlchemy Core,通過Table構(gòu)造函數(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使用的類應(yīng)該滿足如下要求:

  • 繼承自declarative_base對象

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

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

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

2.1 聲明模塊

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

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


2.2 創(chuàng)建引擎

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

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

運行日志如下:


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

創(chuàng)建的模塊實例如果要持久化到數(shù)據(jù)庫中,需要調(diào)用會話Session,Session會和數(shù)據(jù)庫進行交互,它封裝了一個事務(wù),這個事務(wù)將一直保持打開狀態(tài),直到會話提交或回滾。看下方例子:

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

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


從日志看就是提交了一個事務(wù),從數(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 關(guān)系映射框架了解與初步使用的評論 (共 條)

分享到微博請遵守國家法律
庆城县| 蚌埠市| 确山县| 夏河县| 沛县| 利川市| 太白县| 开封市| 贺州市| 渭南市| 宕昌县| 高雄市| 彭阳县| 腾冲县| 敦煌市| 麻栗坡县| 阿荣旗| 五华县| 邵阳市| 安仁县| 青岛市| 宜春市| 杨浦区| 迁安市| 堆龙德庆县| 名山县| 苗栗市| 那坡县| 务川| 盈江县| 海阳市| 阜新市| 乌兰县| 驻马店市| 平和县| 宽甸| 岳阳县| 扎赉特旗| 囊谦县| 五峰| 桃源县|