成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python 異步 ORM 全解析,一文搞定!

開發
Tortoise-ORM 是一款 輕量級、異步、易上手 的 Python ORM,適用于 FastAPI、Sanic、Tornado 等異步 Web 框架。

你是否遇到這些問題?

  • SQLAlchemy 太復雜,想找個輕量級 ORM?
  • 需要在 FastAPI 里操作數據庫,但 SQLAlchemy 配置繁瑣?
  • 想在異步項目中優雅地操作數據庫?

Tortoise-ORM 是一款 輕量級、異步、易上手 的 Python ORM,適用于 FastAPI、Sanic、Tornado 等異步 Web 框架。

本篇文章帶你 從入門到進階,徹底掌握 Tortoise-ORM!

目錄結構

tortoise_project/
│── main.py             # 啟動應用,初始化數據庫
│── db.py               # 負責數據庫連接
│── models.py           # 定義 ORM 模型
│── crud.py             # 封裝數據庫操作(增刪改查)
│── config.py           # 配置數據庫信息
│── requirements.txt    # 依賴包列表

代碼拆分合理,結構清晰,方便擴展!

安裝 & 配置

(1) 安裝依賴

pip install tortoise-orm aiosqlite

如果使用 MySQL:

pip install aiomysql

如果使用 PostgreSQL:

pip install asyncpg

(2) 配置數據庫信息(config.py)

DB_URL = "sqlite://db.sqlite3"  # 這里可以改為 MySQL / PostgreSQL

這樣做的好處:方便更換數據庫類型!

(3) 連接數據庫(db.py)

from tortoise import Tortoise
from config import DB_URL

async def init_db():
    await Tortoise.init(
        db_url=DB_URL,
        modules={"models": ["models"]}  # 告訴 ORM 去哪里找模型
    )
    await Tortoise.generate_schemas()  # 自動創建表

ORM 需要 init() 初始化數據庫,然后 generate_schemas() 自動建表。

定義 ORM 模型(models.py)

from tortoise.models import Model
from tortoise import fields

class User(Model):
    id = fields.IntField(pk=True)
    name = fields.CharField(max_length=50)
    age = fields.IntField()
    created_at = fields.DatetimeField(auto_now_add=True)

    class Meta:
        table = "users"  # 指定數據庫表名

ORM 方式定義表結構,避免手寫 SQL!

封裝數據庫操作(crud.py)

from models import User

# 插入數據
asyncdefcreate_user(name: str, age: int):
    returnawait User.create(name=name, age=age)

# 查詢數據
asyncdefget_user(user_id: int):
    returnawait User.get(id=user_id)

# 更新數據
asyncdefupdate_user(user_id: int, new_age: int):
    user = await User.get(id=user_id)
    user.age = new_age
    await user.save()

# 刪除數據
asyncdefdelete_user(user_id: int):
    user = await User.get(id=user_id)
    await user.delete()

封裝 CRUD,主邏輯更清晰,調用更方便!

啟動程序(main.py)

import asyncio
from db import init_db
from crud import create_user, get_user

asyncdefmain():
    await init_db()  # 連接數據庫

    # 創建用戶
    user = await create_user(name="Alice", age=25)
    print(f"創建用戶:{user.name},ID:{user.id}")

    # 查詢用戶
    found_user = await get_user(user.id)
    print(f"查詢用戶:{found_user.name},年齡:{found_user.age}")

# 運行主函數
asyncio.run(main())

代碼拆分后,main.py 邏輯清晰,可隨時擴展!

進階操作:一對多 & 多對多

(1) 一對多關系(User → Post)

class Post(Model):
    id = fields.IntField(pk=True)
    title = fields.CharField(max_length=100)
    user = fields.ForeignKeyField("models.User", related_name="posts")  # 外鍵

ForeignKeyField 定義外鍵關系,related_name 反向訪問!

(2) 多對多關系(User ? Course)

class Course(Model):
    id = fields.IntField(pk=True)
    name = fields.CharField(max_length=100)
    users = fields.ManyToManyField("models.User", related_name="courses")

多對多關系通過 ManyToManyField 輕松實現!

Tortoise-ORM vs 其他 ORM

ORM 框架

異步支持

輕量級

易用性

適用場景

Tortoise-ORM

? 原生異步

? 輕量級

? 類 Django ORM

? FastAPI / Sanic / 異步項目

SQLAlchemy

?? 依賴 async 擴展

? 復雜

? API 復雜

? 復雜項目

Django ORM

? 僅同步

?? 比較重

? 簡單

? Django 項目

  • 異步項目 → 用 Tortoise-ORM
  • 同步項目 → 用 Django ORM 或 SQLAlchemy

結語:Tortoise-ORM 讓異步數據庫操作更簡單!

Tortoise-ORM 是 FastAPI、Sanic 等異步 Web 框架的最佳 ORM 選擇!

語法簡單,API 直觀,學習成本低!

責任編輯:趙寧寧 來源: Ssoul肥魚
相關推薦

2020-01-02 16:30:02

Spring BootJava異步請求

2019-09-23 10:51:14

JavaJava虛擬機Linux

2023-07-14 08:00:00

ORMRust ORMSQL

2022-06-10 09:04:24

Python讀取文件代碼

2024-01-09 08:24:47

JMM核心線程

2021-08-13 05:50:01

ContainerdDockerKubernetes

2021-03-28 18:40:02

LinuxWindowsJava

2021-10-25 16:01:01

Linux設備樹字符串

2021-10-06 20:23:08

Linux共享內存

2020-10-29 08:55:04

微服務

2025-04-03 08:30:00

Python數據庫ORM

2023-03-31 13:01:31

PythonCelery驗證

2022-08-17 18:25:37

Java分布式搜索引擎

2021-08-31 07:02:20

Diff算法DOM

2021-04-02 06:17:10

大數加減乘除數據結構算法

2021-09-15 06:55:34

異步LinqC#

2022-04-15 08:03:41

SaaS應用管理市場

2021-08-31 07:02:34

數據響應Vue偵測數據變化

2021-04-19 17:32:34

Java內存模型

2023-10-30 18:08:50

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一区二区三区在线 | 亚洲精品国产第一综合99久久 | 毛片电影| 欧美黄色录像 | 国产精品乱码一区二三区小蝌蚪 | 亚洲欧美激情精品一区二区 | 午夜男人天堂 | 久久精品亚洲成在人线av网址 | 欧美在线视频一区二区 | 欧美性生交大片免费 | 欧美成人精品一区 | 久久午夜国产精品www忘忧草 | 四色永久| 麻豆久久久久久久 | 一区二区三区亚洲 | 性色的免费视频 | 精品日韩一区 | 日韩一区二区三区在线视频 | 色免费看| www.国产视频 | 亚洲成av| 亚洲成人一区 | www精品 | 久久99精品久久久久 | 日本不卡视频在线播放 | 看片wwwwwwwwwww | 欧美日产国产成人免费图片 | 国产精品夜夜夜一区二区三区尤 | 国产999精品久久久久久 | 日韩成人在线播放 | 日韩精品在线视频 | 色站综合 | 8x国产精品视频一区二区 | 免费观看一区二区三区毛片 | 国产精品久久久久久久一区二区 | 亚洲精品女优 | 一级做a爰片性色毛片视频停止 | 日日日日操 | 精品视频久久久久久 | 99精品久久| 青青草视频免费观看 |