Skip to content

Timok277/Yeep

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

Yeep - Python ORM для PostgreSQL

Yeep — это легковесная ORM (Object-Relational Mapping) библиотека, созданная для упрощения взаимодействия с базой данных PostgreSQL в асинхронных Python-приложениях.

Цель проекта

Основная цель проекта — глубокое изучение принципов работы ORM. Я хотел на практике понять, как происходит преобразование Python-объектов в SQL-запросы, как реализуются транзакции и управление сессиями на низком уровне. Проект стал практическим исследованием паттернов проектирования для работы с базами данных.

Ключевые возможности

  • Декларативное описание схемы: Создание и управление таблицами через Python-классы.
  • Асинхронность: Построен на основе asyncpg для максимальной производительности.
  • Транзакции: Поддержка атомарных операций с помощью менеджера контекста.
  • Гибкие запросы: Реализованы сложные выборки, включая JOIN, агрегатные функции (SUM, COUNT) и фильтрацию.
  • Безопасность: Использование параметризованных запросов для защиты от SQL-инъекций.

Технологический стек

  • Язык: Python 3.9+
  • Драйвер БД: asyncpg

Пример использования

1. Определение таблицы и подключение к БД

from yeep import PostgresDB, Table, Column, ColumnType

# Подключение к базе данных
db = PostgresDB(
    database="your_db", user="your_user", password="your_password"
)

# Определение схемы таблицы
users_schema = [
    Column("id", ColumnType.SERIAL, primary_key=True),
    Column("name", ColumnType.VARCHAR, length=100, nullable=False),
    Column("email", ColumnType.VARCHAR, length=100, unique=True)
]

# Инициализация объекта таблицы
users = Table(db, "users", users_schema)

2. Операции с данными

async def main():
    async with db:
        # Вставка одной записи
        await users.insert({
            "name": "Иван Иванов",
            "email": "ivan@example.com"
        })

        # Поиск записи
        user = await users.find_one({"email": "ivan@example.com"})
        print(user)

        # Обновление данных
        await users.update(
            {"name": "Иван Петров"},
            {"email": "ivan@example.com"}
        )

About

Asynchronous ORM Library (PostgreSQL)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages