Найти в Дзене
Фреймворки_python3

Простота и легкость в использование на языке программирования Python, Tortoise-orm asyncio ORM (объектно-реляционный картограф).

ORM (объектно-реляционный картограф) предназначен для решения этих проблем путем централизации вашей модели данных и правил обработки данных, гарантируя безопасное управление вашими данными (обеспечивая защиту от SQL-инъекций) и отслеживая взаимосвязи, поэтому вам не нужно этого делать. Tortoise ORM — это асинхронная ORM для Python, созданная с учётом работы с отношениями между объектами. Она вдохновлена популярным Django ORM. Tortoise ORM поддерживает базы данных SQLite, MySQL, PostgreSQL, Microsoft SQL Server и Oracle. Tortoise ORM была разработана для облегчения миграции разработчиков с синхронных ORM на асинхронные. Она также показывает хорошие результаты в сравнении с другими ORM для Python. Создаём файл model.py from tortoise.models import Model from tortoise import fields class Page(Model): id = fields.IntField(pk=True) name = fields.TextField() Инициализируйте свои модели и базу данных следующим образом. from tortoise import Tortoise, run_a

ORM (объектно-реляционный картограф) предназначен для решения этих проблем путем централизации вашей модели данных и правил обработки данных, гарантируя безопасное управление вашими данными (обеспечивая защиту от SQL-инъекций) и отслеживая взаимосвязи, поэтому вам не нужно этого делать.

Tortoise ORM — это асинхронная ORM для Python, созданная с учётом работы с отношениями между объектами. Она вдохновлена популярным Django ORM. Tortoise ORM поддерживает базы данных SQLite, MySQL, PostgreSQL, Microsoft SQL Server и Oracle.

Tortoise ORM была разработана для облегчения миграции разработчиков с синхронных ORM на асинхронные. Она также показывает хорошие результаты в сравнении с другими ORM для Python.

Создаём файл model.py

from tortoise.models import Model

from tortoise import fields

class Page(Model):

id = fields.IntField(pk=True)

name = fields.TextField()

Инициализируйте свои модели и базу данных следующим образом.

from tortoise import Tortoise, run_async

async def init():

"""

Здесь мы создали файл db.sqlite3

Инициализация в директории models

"""

await Tortoise.init(db_url='sqlite://db.sqlite3', modules={'models': ['models.model']})

await Tortoise.generate_schemas()

run_async(init())

Например - это ваше приложение sanic, aiogram, а создадим aiogram.

фото айограм
фото айограм

1. Создадим виртуальное окружение

python3 -m venv venv

source ./venv/bin/activate

2. Загрузим нужные пакеты

pip install tortoise-orm

pip install aiogram

3. Создадим директорию для ORM -

mkdir models

в models создадим файл model.py

скачиваем файл model.py

4. Вот такая структура

app .

|

|models/

| |

| |model.py

|

| main.py

from aiogram.filters import CommandStart

from aiogram.types import Message, BotCommand

#Подключаем нашу базу данных

from models.model import MyChat

from tortoise import Tortoise

............................

async def main() -> None:

"""

Здесь мы запустим базу данных

"""

await Tortoise.init(

db_url='sqlite://db.sqlite3',

modules={'models': ['models.model']}

)

await Tortoise.generate_schemas()

"""

А, здесь запуск бота

"""

bot = Bot(token=TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))

dp.startup.register(on_startup)

await dp.start_polling(bot)

from tortoise.models import Model

from tortoise import fields

import json as pyjson

def encodind_dict(args: dict):

return pyjson.dumps(args)

def decode_dict(args: str):

return pyjson.loads(args)

class TimestampMixin():

created_at = fields.DatetimeField(null=True, auto_now_add=True)

modified_at = fields.DatetimeField(null=True, auto_now=True)

class MyChat(Model, TimestampMixin):

id = fields.IntField(pk=True)

name = fields.CharField(max_length=255)

data = fields.JSONField(encode=encodind_dict, decode=decode_dict)

def __str__(self):

return self.name

Исходники этого кода в телеграмм канале https://t.me/frameworki_app

исходник под тегом #aiogram_and_bd

Инструкция для получения токена для бота . https://helpdesk.bitrix24.ru/open/17538378/