Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
January 13, 2023 10:46 pm GMT

orms python: uma viso geral

  • o que orm?
  • por que usar orm?
  • quais so os orms para python?
  • como escolher um orm?
  • por que usar peewee?
  • por que usar pony orm?
  • por que usar sqlalchemy?
  • por que usar tortoise-orm?
  • quais verses do python os orms do suporte?
  • quais bancos de dados os orms do suporte?
  • por que django orm no est na comparao?
  • qual o melhor orm...
    • ...para operaes rpidas nos dados?
    • ...para consultas de alta complexidade?
    • ...para relacionamentos complexos entre os dados?
    • ...para alta escabilidade?
    • ...para projetos menores e mais simples
    • ...com melhor curva de aprendizado
    • ...para requisitos mnimos de escalabilidade
    • ...para requisitos especficos de concorrncia
    • ...para requisitos mnimos de segurana
    • ...para requisitos mnimos de suporte
    • ...para uso de banco de dados assncrono
    • ...para requisitos especficos de concorrncia
  • quais as diferenas entre peewee e pony orm?
  • consideraes finais

o que orm?

ORMs (Object-Relational Mappers) so ferramentas fundamentais para qualquer desenvolvedor que trabalha com bancos de dados relacionais. Eles permitem acessar os dados usando a sintaxe de objetos, ao invs de SQL, tornando o cdigo mais limpo e fcil de manter.

por que usar orm?

Existem vrias razes para usar um ORM. Primeiro, ele separa a lgica de banco de dados da lgica de negcios, o que torna o cdigo mais fcil de entender e manter. Alm disso, ele permite que voc trabalhe com dados em um formato nativo de objetos Python, o que mais intuitivo e fcil de trabalhar.

quais so os orms para python?

Quando se trata de escolher um ORM, existem vrias opes disponveis, incluindo principalmente: SQLAlchemy, Django ORM, Peewee, Tortoise-ORM, Pony ORM e Storm. Cada opo tem suas prprias caractersticas e vantagens.

como escolher um orm?

Ao escolher um ORM, importante considerar suas necessidades especficas e avaliar as caractersticas das opes disponveis. Aqui, vamos comparar brevemente os principais ORMs disponveis para Python e discutir as caractersticas, vantagens e desvantagens, para ajud-lo a escolher a melhor opo para seu projeto.

por que usar peewee?

Peewee uma escolha popular para projetos de pequeno e mdio porte, oferece uma abstrao simples e intuitiva do banco de dados, e fcil de usar e aprender. Ele uma boa escolha para projetos menores e mais simples, e pode ser uma boa opo para desenvolvedores iniciantes que esto comeando a trabalhar com ORMs.

$ pip install peewee
from datetime import datetimefrom peewee import *# define a conexo com o banco de dadosdb = SqliteDatabase(":memory:")# define a classe do modeloclass User(Model):    id = IntegerField(primary_key=True)    name = TextField()    created_on = DateTimeField(default=datetime.now)    class Meta:        database = db# cria a tabeladb.create_tables([User])# cria um novo usuriouser = User(name="John Doe")user.save()# busca um usurio pelo iduser = User.get(User.id == 1)print(user.name)# atualiza o nome do usuriouser.name = "Jane Doe"user.save()# deleta o usuriouser.delete_instance()

por que usar pony orm?

Pony ORM muito semelhante ao Peewee, uma escolha para projetos de pequeno e mdio porte, para projetos menores e mais simples, e boa opo para desenvolvedores iniciantes.

$ pip install pony
from datetime import datetimefrom pony.orm import *# define a conexo com o banco de dadosdb = Database()db.bind(provider="sqlite", filename=":memory:")# define a classe do modeloclass User(db.Entity):    id = PrimaryKey(int, auto=True)    name = Required(str)    created_on = Required(datetime, default=datetime.now)# cria as tabelas no banco de dadosdb.generate_mapping(create_tables=True)with db_session:    # cria um novo usurio    user = User(name="John Doe")    commit()    # busca um usurio pelo id    user = User[1]    print(user.name)    # atualiza o nome do usurio    user.name = "Jane Doe"    commit()    # deleta o usurio    user.delete()    commit()

por que usar sqlalchemy?

SQLAlchemy considerado um dos ORMs mais maduros e completos disponveis, oferecendo uma grande variedade de recursos para lidar com bancos de dados. Ele uma boa escolha para projetos de mdio e grande escala, e amplamente utilizado em projetos de produo de grande escala.

$ pip install [SQLAlchemy](https://docs.sqlalchemy.org/en/latest/)
from datetime import datetimefrom sqlalchemy import Column, DateTime, Integer, Text, create_enginefrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.orm import sessionmaker# define a conexo com o banco de dadosengine = create_engine("sqlite:///:memory:")# define a classe do modeloBase = 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 dadosBase.metadata.create_all(bind=engine)# cria uma sesso com o banco de dadosSession = sessionmaker(bind=engine)with Session as session:    # cria um novo usurio    user = User(name="John Doe")    session.add(user)    session.commit()    # busca um usurio pelo id    user = session.query(User).get(1)    print(user.name)    # atualiza o nome do usurio    user.name = "Jane Doe"    session.commit()    # deleta o usurio    session.delete(user)

por que usar tortoise-orm?

Tortoise-ORM construdo sobre o asyncio e projetado para projetos que precisam de alta performance e escalabilidade, especialmente quando se trata de operaes assncronas. Ele uma boa escolha para projetos que exigem requisitos especficos de concorrncia e escalabilidade. Ele fcil de usar e aprender, e oferece uma abstrao simples e intuitiva do banco de dados.

$ pip install tortoise-orm

O Tortoise-orm utiliza funes de corotina (await) para as operaes no banco de dados. Lembre-se de que esse exemplo deve ser executado dentro de uma funo async.

# __main__.pyfrom datetime import datetimefrom tortoise import Tortoise, fields, run_asyncfrom tortoise.models import Model# define a classe do modeloclass User(Model):    id = fields.IntField(pk=True)    name = fields.TextField()    created_on = fields.DatetimeField(default=datetime.now)async def run():    # define a conexo 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 usurio    user = await User.create(name="John Doe")    # busca um usurio pelo id    user = await User.get(id=1)    print(user.name)    # atualiza o nome do usurio    user.name = "Jane Doe"    await user.save()    # deleta o usurio    await user.delete()run_async(run())

quais verses do python os orms do suporte?

PeeweePony ORMSQLAlchemyTortoise-ORM
Python2.7+ or 3.4+2.7 or 32.7 or 3.6+3.6+

quais bancos de dados os orms do suporte?

PeeweePony ORMSQLAlchemyTortoise-ORM
SQLitexxxx
MySQL/MariaDBxxxx
PostgreSQLxxxx
Oraclexx
Microsoft SQL Serverx
CockroachDBxx

por que django orm no est na comparao?

Em geral, no recomendado usar o Django ORM em uma aplicao que no usa o Django. Isso se deve ao fato de que o Django ORM foi projetado especificamente para trabalhar com o framework Django e suas estruturas de dados. Ele pode no funcionar corretamente ou ter limitaes em um ambiente fora do Django.

O Django ORM tem certas dependncias do Django, como o gerenciador de configuraes e o gerenciador de URLs, que podem no estar presentes em uma aplicao sem o Django. Isso pode tornar a implementao do Django ORM em uma aplicao no-Django um desafio e complicar o cdigo.

Se voc estiver familiarizado com o Django ORM e desejar us-lo em uma aplicao no-Django, possvel faz-lo. Mas devido a isso, ele no foi incluido nas comparaes.

qual o melhor orm...

Todos os ORMs mencionados so bons e tm suas prprias vantagens e desvantagens. A escolha do melhor ORM para um determinado projeto depender das necessidades especficas do projeto e das preferncias do desenvolvedor.

Assim, vamos analisar considerando alguns cenrios mais especficos e concretos.

...para operaes rpidas nos dados?

A performance na execuo das operaes do banco, que costuma ser um dos indicadores mais procurados na hora de escolher um ORM, depende de vrios fatores, como: o banco de dados usado, a complexidade das consultas e o tamanho do conjunto de dados.

Portanto, difcil comparar diretamente a performance de diferentes ORMs sem considerar esses fatores. Mas foi realizado, no incio de 2022, um benchmark entre os ORMs considerados diferentes cenrios. Uma viso geral do benchmark pode ser visto no grfico abaixo.

Disclaimer: o benchmark foi realizado por contribuidores do projeto Tortoise-ORM

Python ORM benchmark

Fonte: https://github.com/tortoise/orm-benchmarks

...para consultas de alta complexidade?

Para um projeto com consultas SQL de alta complexidade, SQLAlchemy uma das melhores opes de ORM para Python. Ele considerado um dos ORMs mais maduros e completos disponveis e oferece uma grande variedade de recursos, incluindo suporte para vrios bancos de dados, suporte a transaes, suporte a consultas avanadas e suporte a mapeamento objeto-relacional avanado.

SQLAlchemy oferece uma grande flexibilidade no que diz respeito a consultas, tanto atravs do uso de sua API de consultas nativa quanto atravs do uso de SQL bruto. Alm disso, ele permite a utilizao de expresses avanadas, sub-consultas e junes complexas, o que til para projetos com consultas complexas.

...para relacionamentos complexos entre os dados?

Para um projeto com relacionamentos complexos entre as tabelas, SQLAlchemy tambm uma das melhores opes de ORM para Python. Ele oferece suporte a mapeamento objeto-relacional avanado (ORM) e suporta vrios tipos de relacionamentos, incluindo relacionamentos um-para-um, um-para-muitos e muitos-para-muitos. Ele tambm permite a criao de tabelas de juno e tabelas de associao, o que til para lidar com relacionamentos complexos.

verdade que os outros ORMs (Peewee, Pony ORM e Tortoise-ORM) tambm suportam relacionamentos um-para-um, um-para-muitos e muitos-para-muitos, assim como o SQLAlchemy. A diferena desses trs ORMs para o SQLAlchemy, que o SQLAlchemy tem uma abstrao mais flexvel e completa para trabalhar com relacionamentos complexos. Ele oferece suporte a mapeamento objeto-relacional avanado e recursos avanados de carregamento de dados, como lazy loading e eager loading, que permitem carregar dados relacionados de forma eficiente.

...para alta escabilidade?

Para um projeto que exige escalabilidade, SQLAlchemy tambm uma das melhores opes de ORM para Python. Como dito, considerado um dos ORMs mais maduros e completos disponveis e oferece uma grande variedade de recursos. SQLAlchemy amplamente utilizado em projetos de produo de grande escala e uma boa escolha para projetos complexos que possam exigir escalabilidade e performance. Ele tem suporte a vrios tipos de engenharia de dados, incluindo recursos de replicao e escalabilidade.

...para projetos menores e mais simples

Se voc estiver trabalhando em um projeto menor e mais simples, que no exige uma grande quantidade de recursos avanados, o Pony ORM ou Peewee podem ser boas opes. Eles so fceis de usar e aprender e oferecem uma abstrao simples e intuitiva do banco de dados.

...com melhor curva de aprendizado

Se voc estiver comeando a trabalhar com ORMs e deseja algo mais fcil de usar e aprender, o Pony ORM ou Peewee podem ser boas opes. Eles tm uma curva de aprendizado menor do que o SQLAlchemy.

...para requisitos mnimos de escalabilidade

Se voc estiver trabalhando em um projeto com requisitos mnimos de escalabilidade, o Pony ORM ou Peewee podem ser boas opes. Eles so leves e fceis de usar e podem ser suficientes para lidar com o trfego e o volume de dados do seu projeto.

...para requisitos especficos de concorrncia

Se voc estiver trabalhando em um projeto com requisitos especficos de concorrncia, o Tortoise-ORM uma boa opo pois ele construdo sobre o asyncio e suporta vrios bancos de dados.

...para requisitos mnimos de segurana

Se voc estiver trabalhando em um projeto com requisitos mnimos de segurana e no precisar de recursos avanados de segurana, como proteo contra SQL injection, o Pony ORM ou Peewee podem ser boas opes.

...para requisitos mnimos de suporte

Se voc estiver trabalhando em um projeto com requisitos mnimos de suporte e no precisar de recursos avanados de suporte, como suporte para vrios bancos de dados, o Pony ORM ou Peewee podem ser boas opes.

...para uso de banco de dados assncrono

O Tortoise-ORM construdo sobre o asyncio e uma boa opo para projetos que precisam de alta performance e escalabilidade, especialmente quando se trata de operaes assncronas.

...para requisitos especficos de concorrncia

O Tortoise-ORM uma boa escolha para projetos que exigem requisitos especficos de concorrncia, ele construdo sobre o asyncio e suporta vrios bancos de dados, isso lhe permite lidar com concorrncia de forma eficiente.

quais as diferenas entre peewee e pony orm?

Pony ORM e Peewee so muito semelhantes em caractersticas. Ambas as bibliotecas fornecem uma sintaxe simples para consultas. Entretanto, h algumas diferenas:

  • Peewee considerado mais leve e minimalista, enquanto Pony ORM mais completo e tem mais recursos.
  • Peewee tem uma sintaxe de consulta mais simples e intuitiva, enquanto Pony ORM tem uma sintaxe mais avanada e poderosa.
  • Peewee tem uma documentao mais completa e melhor organizada, enquanto Pony ORM tem uma documentao menos completa e um pouco mais difcil de navegar.
  • Peewee mais rpido e tem menos dependncias do que Pony ORM.

Em resumo, Peewee uma boa escolha se voc estiver procurando por uma biblioteca simples e fcil de usar, enquanto Pony ORM uma boa escolha se voc precisar de mais recursos e flexibilidade.

consideraes finais

De forma geral, SQLAlchemy considerado um dos ORMs mais maduros e completos para Python, e amplamente utilizado em projetos de produo de grande escala, ele flexvel e oferece uma grande variedade de recursos, incluindo, suporte a transaes, suporte a consultas avanadas e suporte a mapeamento objeto-relacional avanado. Ele uma boa escolha para projetos complexos e que possa exigir escalabilidade.

Pony ORM e Peewee so ORMs mais simples e fceis de usar, eles so bons para projetos menores e mais simples, e so uma boa escolha para desenvolvedores iniciantes, pois oferecem uma abstrao simples e intuitiva do banco de dados.

Tortoise-ORM outro ORM popular para Python, ele construdo sobre o asyncio e suporta SQLite, MySQL e PostgreSQL. Ele fcil de usar e aprender e uma boa escolha para projetos com requisitos de concorrncia e escalabilidade.

Em resumo, cada ORM tem suas prprias caractersticas e recursos nicos, e a escolha do melhor ORM para um projeto depender das necessidades especficas do projeto, como a escalabilidade, complexidade das consultas e necessidade de concorrncia.

recomendvel experimentar cada uma dessas bibliotecas e comparar as funcionalidades e facilidade antes de tomar uma deciso.


Original Link: https://dev.to/leandcesar/orms-python-uma-visao-geral-2po3

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To