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
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()
小马 ORM
Pony ORM是一款非常简单的小工具,它可以帮助您完成一些简单的项目,并且可以帮助您完成一些简单的任务。
$ pip install pony
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()
SQLAlchemy
SQLAlchemy考虑了 ORM 的主要功能和完整配置,为激光雷达和银行提供了丰富的资源。 Ele é uma boa escolha para projetos de médio and grande escala。
$ pip install sqlalchemy
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)
龟类-ORM
Tortoise-ORM构建了一个asyncio应用程序,用于提高性能和升级,特别是操作关联的所有方面。这是一个协调和升级的必要条件的项目。使用、理解和提供银行的简单抽象和直观的方法是非常简单的。
$ pip install tortoise-orm
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())
比较: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项目贡献者实现的基准测试
字体:https://github.com/tortoise/orm-b enchmarks
...关于高级综合体的咨询?
该项目涉及 SQL 的高级复杂性、SQLAlchemy和 Python 的 ORM 操作。如果您需要咨询,请使用我们的 API 进行咨询,以使用 SQL 工具进行咨询。此外,您还可以使用高级的表达方式、子咨询和联合咨询,或者使用联合咨询的项目。
...与爸爸之间的复杂关系?
该项目与 Tabelas、SQLAlchemy和 Python 的 ORM 操作相关。提供支持映射对象关系高级 (ORM) 和支持各种关系技巧,包括关系关系、关系关系和关系关系。在此过程中,您可以与激光雷达进行关联和关联,从而实现复杂的关系。
除了 ORM(peewee、Pony ORM和Tortoise-ORM)之外,它们还支持 um-para-um、um-para-muitos 和 muitos-para-muitos,这与SQLAlchemy 的抽象概念不同,但它可以灵活地完成复杂的关系。提供支持映射对象关系的高级功能和高级应用程序的递归功能,可以延迟加载和热切加载,从而允许高级应用程序的关系。
...para alta escabilidade?
在项目扩展中,SQLAlchemy是 Python 的 ORM 操作的最佳选择。可以充分利用大型升级产品的项目,并可以将项目复杂化以提高性能和性能。支持各种数据库工程技巧的元素,包括复制循环和升级。
...主要项目和简单项目
项目的主要目的和最简单的一点是,我们无法对Pony ORM或Peewee Podem Ser Boas Opções 进行大量重复操作。这是银行的使用、理解和提供的简单抽象和直观方法。
...com 梅尔霍曲线 de aprendizado
您可以使用 ORM 进行开发,并且可以轻松地使用和下载Pony ORM或peewee 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 有何不同?
- Peewee考虑到了极简主义,Pony ORM很完整,并且可以递归。
- Peewee 的语法是简单和直观的,而Pony ORM 的语法是高级和简单的。
- peewee 的文档可以是完整的并且组织得很好,因此Pony ORM 的文档可以是完整的。
- Peewee和Pony ORM 相关的快速功能。
总结一下,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 ORM和ORM是最简单的和最简单的方式,它是最简单的项目和最简单的方法,也是最简单的方法,也是最简单的方法,最简单的方法和银行的直觉。
Tortoise-ORM是 Python 中流行的 ORM,它具有异步功能并支持 SQLite、MySQL 和 PostgreSQL。您可以轻松使用和获取项目,并了解协调和升级的必要条件。
总结一下,ORM 的固有特性和递归性,以及与项目相关的 ORM 的优点,包括项目的特殊需要、升级、咨询的复杂性以及协调的必要性。
推荐实验性的书籍和比较,作为决策的功能和便利。
文章来源:https://dev.to/leandcesar/orms-python-uma-visao-geral-2po3




