发布于 2026-01-06 1 阅读
0

Qual ORM 是否适用于 Python 项目?

Qual ORM 是否适用于 Python 项目?

O que é?

ORM(对象关系映射器)是关系数据库中的一个基本概念。您可以使用SQL对象的语法、龙卷风或快速的代码并轻松进行操作

Para que serve?

各银行的逻辑分别为商业逻辑。不过,您可以使用Python 对象的本地格式进行 trabalhe 操作,这可以直观且方便地进行操作。

Quais são?

关于 ORM 的研究,Python 存在多种操作。正如“mais popes são”一样:

Como escolher?

在学习 ORM 时,重要的是要考虑特定的必要性和可选的操作特性。

因此,我将比较 Python 的 ORM 原理,并讨论其特性、优点和缺点,以帮助您更好地了解自己的项目。


小矮人

小童标志

peewee和 uma escolha 流行的小型和中门项目,提供简单的抽象和直观的银行操作,以及方便的使用和理解。该项目是一个简单的项目,是一个与 ORM 相关的项目。

$ pip install peewee
Enter fullscreen mode Exit fullscreen mode
from datetime import datetime

from peewee import *

# define a conexão com o banco de dados
db = SqliteDatabase(":memory:")

# define a classe do modelo
class User(Model):
    id = IntegerField(primary_key=True)
    name = TextField()
    created_on = DateTimeField(default=datetime.now)

    class Meta:
        database = db


# cria a tabela
db.create_tables([User])
# cria um novo usuário
user = User(name="John Doe")
user.save()
# busca um usuário pelo id
user = User.get(User.id == 1)
print(user.name)
# atualiza o nome do usuário
user.name = "Jane Doe"
user.save()
# deleta o usuário
user.delete_instance()
Enter fullscreen mode Exit fullscreen mode

小马 ORM

小马 ORM 标志

Pony ORM是一款非常简单的小工具,它可以帮助您完成一些简单项目,并且可以帮助您完成一些简单任务

$ pip install pony
Enter fullscreen mode Exit fullscreen mode
from datetime import datetime

from pony.orm import *

# define a conexão com o banco de dados
db = Database()
db.bind(provider="sqlite", filename=":memory:")

# define a classe do modelo
class User(db.Entity):
    id = PrimaryKey(int, auto=True)
    name = Required(str)
    created_on = Required(datetime, default=datetime.now)


# cria as tabelas no banco de dados
db.generate_mapping(create_tables=True)

with db_session:
    # cria um novo usuário
    user = User(name="John Doe")
    commit()
    # busca um usuário pelo id
    user = User[1]
    print(user.name)
    # atualiza o nome do usuário
    user.name = "Jane Doe"
    commit()
    # deleta o usuário
    user.delete()
    commit()
Enter fullscreen mode Exit fullscreen mode

SQLAlchemy

SQLAlchemy 标志

SQLAlchemy考虑了 ORM 的主要功能和完整配置,为激光雷达和银行提供了丰富的资源。 Ele é uma boa escolha para projetos de médio and grande escala。

$ pip install sqlalchemy
Enter fullscreen mode Exit fullscreen mode
from datetime import datetime

from sqlalchemy import Column, DateTime, Integer, Text, create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# define a conexão com o banco de dados
engine = create_engine("sqlite:///:memory:")

# define a classe do modelo
Base = declarative_base()


class User(Base):
    __tablename__ = "user"
    id = Column(Integer, primary_key=True)
    name = Column(Text)
    created_on = Column(DateTime, default=datetime.utcnow)


# cria as tabelas no banco de dados
Base.metadata.create_all(bind=engine)
# cria uma sessão com o banco de dados
Session = sessionmaker(bind=engine)

with Session as session:
    # cria um novo usuário
    user = User(name="John Doe")
    session.add(user)
    session.commit()
    # busca um usuário pelo id
    user = session.query(User).get(1)
    print(user.name)
    # atualiza o nome do usuário
    user.name = "Jane Doe"
    session.commit()
    # deleta o usuário
    session.delete(user)
Enter fullscreen mode Exit fullscreen mode

龟类-ORM

龟类-ORM标志

Tortoise-ORM构建了一个asyncio应用程序,用于提高性能和升级,特别是操作关联的所有方面。这是一个协调和升级的必要条件的项目。使用、理解和提供银行的简单抽象和直观的方法是非常简单的。

$ pip install tortoise-orm
Enter fullscreen mode Exit fullscreen mode

O Tortoise-orm utiliza funções awaitpara as operações no banco de bados。徽标是由功能执行器开发的async

# __main__.py
from datetime import datetime

from tortoise import Tortoise, fields, run_async
from tortoise.models import Model


# define a classe do modelo
class User(Model):
    id = fields.IntField(pk=True)
    name = fields.TextField()
    created_on = fields.DatetimeField(default=datetime.now)


async def run():
    # define a conexão com o banco de dados
    await Tortoise.init(
        db_url="sqlite://:memory:",
        modules={"models": ["__main__"]},
    )
    # cria as tabelas no banco de dados
    await Tortoise.generate_schemas()
    # cria um novo usuário
    user = await User.create(name="John Doe")
    # busca um usuário pelo id
    user = await User.get(id=1)
    print(user.name)
    # atualiza o nome do usuário
    user.name = "Jane Doe"
    await user.save()
    # deleta o usuário
    await user.delete()


run_async(run())
Enter fullscreen mode Exit fullscreen mode

比较:Python 版本

小矮人 小马 ORM SQLAlchemy 龟类-ORM
Python 版本 2.7+ 或 3.4+ 2.7 或 3 2.7 或 3.6+ 3.6+

Comparativo: bancos de dados

小矮人 小马 ORM SQLAlchemy 龟类-ORM
SQLite ✔️ ✔️ ✔️ ✔️
MySQL/MariaDB ✔️ ✔️ ✔️ ✔️
PostgreSQL ✔️ ✔️ ✔️ ✔️
甲骨文 ✔️ ✔️
Microsoft SQL Server ✔️
蟑螂数据库 ✔️ ✔️

不过,不推荐使用Django ORM,因为它不适用于Django。这是一个Django ORM开发工具,用于Django框架和 Django 框架的具体项目。Django的功能与环境限制相关。如果您熟悉Django ORM,并使用非 Django 的应用程序,就可以使用它。 Mas devido a isso, ele não foi 包括比较。

Qual é o melhor ORM...

所有 ORM 都具有良好的优点和优点。一个关于确定项目依赖的完善的 ORM 课程,取决于项目的具体需求和开发者的偏好。

阿西姆,我们分析了一些具体情况。

...para operações rápidas nos bados?

银行执行的表演,是在 ORM 的时间内进行的各种指标的表演,取决于各种因素,比如:美国银行,一个与银行联合咨询的综合体。

Portanto,不同 ORM 的性能比较困难,但需要考虑这些因素。从 2022 年开始,我们将考虑不同场景的 ORM 基准。 Uma visão geral do benchmark pode ser visto no gráfico abaixo.

免责声明: Tortoise-ORM项目贡献者实现的基准测试

Python ORM 基准测试

字体:https://github.com/tortoise/orm-b ​​enchmarks

...关于高级综合体的咨询?

该项目涉及 SQL 的高级复杂性、SQLAlchemy和 Python 的 ORM 操作。如果您需要咨询,请使用我们的 API 进行咨询,以使用 SQL 工具进行咨询。此外,您还可以使用高级的表达方式、子咨询和联合咨询,或者使用联合咨询的项目。

...与爸爸之间的复杂关系?

该项目与 Tabelas、SQLAlchemy和 Python 的 ORM 操作相关。提供支持映射对象关系高级 (ORM) 和支持各种关系技巧,包括关系关系、关系关系和关系关系。在此过程中,您可以与激光雷达进行关联和关联,从而实现复杂的关系。

除了 ORM(peeweePony ORMTortoise-ORM)之外,它们还支持 um-para-um、um-para-muitos 和 muitos-para-muitos,这与SQLAlchemy 的抽象概念不同,但它可以灵活地完成复杂的关系。提供支持映射对象关系的高级功能和高级应用程序的递归功能,可以延迟加载和热切加载,从而允许高级应用程序的关系。

...para alta escabilidade?

在项目扩展中,SQLAlchemy是 Python 的 ORM 操作的最佳选择。可以充分利用大型升级产品的项目,并可以将项目复杂化以提高性能和性能。支持各种数据库工程技巧的元素,包括复制循环和升级。

...主要项目和简单项目

项目的主要目的和最简单的一点是,我们无法对Pony ORMPeewee Podem Ser Boas Opções 进行大量重复操作。这是银行的使用、理解和提供的简单抽象和直观方法。

...com 梅尔霍曲线 de aprendizado

您可以使用 ORM 进行开发,并且可以轻松地使用和下载Pony ORMpeewee podem Ser boas opções。SQLAlchemy中的一些常见问题

...升级的最低要求

项目需要至少升级的必要条件,或者Pony ORM其他操作。其主要特点是使用激光雷达和传输量足以满足您的项目需求。

...关于一致的特殊要求

项目需要特定的一致条件,Tortoise-ORM可以帮助您构建异步并支持各种银行。

...保障最低限度的必要条件

该项目需要最少的安全要求,并且不需要精确的递归高级安全保护,可以防止 SQL 注入,或者使用Pony ORM小程序操作。

...para uso de bados assíncrono 银行

O Tortoise-ORM构建了异步操作,并为项目提供了精确的性能和升级,特别是与操作相关的所有操作。


peewee 和 Pony ORM 有何不同?

Pony ORMpeewee 的特点是不同的:

总结一下,peewee和 uma escolha 是您通过简单的图书馆操作和使用方便的方式获得的,enquanto Pony ORM 和uma escolha 是最精确的递归和灵活性。

为什么 ORM 会停止运行?

没有Tortoise -ORM(例如agora também,ainda em versão beta,o asyncio-SQLAlchemy),重要的是所有ORM assíncrono都是必要的。

银行的操作速度极快,操作简单,但大多数情况下都不需要 ORM 辅助。解决问题asyncio时,您可以通过多种方式同时使用激光雷达,并以任意速度进行 I/O(输入/输出、escrita/leitura)的计算。

例如,我们可以同时使用多个应用程序。最后,我们对线程的使用情况进行了详细说明,并回复了我们对硬件的常见问题。可以asyncio同时使用激光雷达和其他设备。

外部 ORM

值得一提的是,ORM 的外观和比较方式没有任何区别:

  • SQLObject:ORM 是用于数据库对象的接口,用于类的表,用于实例的链接和用于属性的列
  • Storm:ORM da Canonical
  • GINO : um atípico ORM assíncrono
  • 演讲者:ORM com uma Implementação ActiveRecordsimples, mas bonita
  • ormar:迷你 ORM assíncrono
  • Prisma 客户端 Python:ORM 相关工具,构建Prisma本身
  • Piccolo:ORM 以及 assíncrono 和 Moderno 咨询的构建者

最终考虑因素

从形式上来说,SQLAlchemy 和ORM 是 Python 的主要功能和完整版本,可在大型升级产品项目中使用,并可灵活地提供各种递归版本。 Ele éuma boa escolha para projetos composos e que possa exigir escalabilidade。

Pony ORMORM是最简单的和最简单的方式,它是最简单的项目和最简单的方法,也是最简单的方法,也是最简单的方法,最简单的方法和银行的直觉。

Tortoise-ORM是 Python 中流行的 ORM,它具有异步功能并支持 SQLite、MySQL 和 PostgreSQL。您可以轻松使用和获取项目,并了解协调和升级的必要条件。

总结一下,ORM 的固有特性和递归性,以及与项目相关的 ORM 的优点,包括项目的特殊需要、升级、咨询的复杂性以及协调的必要性。

推荐实验性的书籍和比较,作为决策的功能和便利。

文章来源:https://dev.to/leandcesar/orms-python-uma-visao-geral-2po3