Tortoise ORM - это простая и производительная асинхронная ORM (Object-Relational Mapper) для Python 3.10+, созданная под сильным вдохновением от Django ORM.
Библиотека разработана специально для
asyncio и сочетает привычный, выразительный синтаксис моделей Django с нативной асинхронностью, избавляя от бойлерплейта и необходимости писать «сырые» SQL-запросы в асинхронных микросервисах.async/await) без блокировки event loop.Model, строгая типизация полей (fields), поддержка связей ForeignKeyField / ManyToManyField и удобный QuerySet (filter, annotate, prefetch_related).asyncpg, psycopg)asyncmy, aiomysql)aiosqlite)asyncodbc)tortoise makemigrations, tortoise migrate, tortoise sqlmigrate) для автоматического отслеживания изменений схем и генерации миграций.1. Определение моделей:
from tortoise import fields
from tortoise.models import Model
class Tournament(Model):
id = fields.IntField(primary_key=True)
name = fields.CharField(max_length=50)
class Event(Model):
id = fields.BigIntField(primary_key=True)
name = fields.TextField()
tournament = fields.ForeignKeyField('models.Tournament', related_name='events')
2. Инициализация и работа с данными:
import asyncio
from tortoise import Tortoise
async def main():
# Подключение к БД
await Tortoise.init(
db_url='sqlite://db.sqlite3',
modules={'models': ['__main__']}
)
# Генерация таблиц (для dev-режима)
await Tortoise.generate_schemas()
# Создание записей
tournament = await Tournament.create(name='Cyber Cup 2026')
await Event.create(name='Final Match', tournament=tournament)
# Выборка с подгрузкой связанных связей
events = await Event.filter(tournament=tournament).prefetch_related('tournament')
for event in events:
print(f"Событие: {event.name}, Турнир: {event.tournament.name}")
await Tortoise.close_connections()
asyncio.run(main())
# Базовая версия (SQLite):
pip install tortoise-orm
# С драйвером для PostgreSQL:
pip install "tortoise-orm[asyncpg]"
# С драйвером для MySQL:
pip install "tortoise-orm[asyncmy]"
#Python #TortoiseORM #ORM #AsyncIO #FastAPI #PostgreSQL #MySQL #Database #Backend #DevTools #OpenSource
https://github.com/tortoise/tortoise-orm
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - tortoise/tortoise-orm: Familiar asyncio ORM for python, built with relations in mind
Familiar asyncio ORM for python, built with relations in mind - tortoise/tortoise-orm