Aller au contenu

Python/Peewee

Avy amin'i Wikibooks

Torolàlana Peewee ORM: Endri-javatra Fototra sy Mandroso

[hanova]

Peewee ORM dia ORM kely sy mora ampiasaina ho an'ny Python, izay manamora ny fifandraisana amin'ny tahiry amin'ny alalan'ny modely Python. Ity cheatsheet ity dia manome topi-maso fohy momba ny endri-javatra fototra sy mandroso amin'ny Peewee ORM.

Fomba fototra amin'ny Peewee ORM

[hanova]
  • Fametrahana sy Fampiasana ny Peewee :

Mba hampiasana Peewee ORM dia mila mametraka azy aloha ianao:

pip install peewee
  • Famoronana Firafitry ny Tahiry :

Amin'ny Peewee, afaka mamorona firafitry ny tahiry amin'ny alalan'ny modely ianao.

from peewee import *

db = SqliteDatabase('my_database.db')

class BaseModel(Model):
    class Meta:
        database = db

class User(BaseModel):
    name = CharField()
    age = IntegerField()
    email = CharField()

db.connect()
db.create_tables([User])
  • Fametrahana Angona ao amin'ny Tahiry :

Azonao atao ny mametraka angona vaovao ao amin'ny tahiry amin'ny alalan'ny famoronana zavatra avy amin'ny modely.

user = User.create(name='Rakoto', age=30, email='rakoto@example.com')
  • Fikarohana Angona :

Peewee ORM dia manohana ny fikarohana angona amin'ny alalan'ny methods toy ny select().

users = User.select()
for user in users:
    print(user.name, user.age)

rakoto = User.get(User.name == 'Rakoto')
print(rakoto.email)
  • Fanavaozana sy Famafana Angona :

Azonao atao ny manavao na mamafa angona avy amin'ny tahiry amin'ny alalan'ny modely.

Fanavaozana
rakoto = User.get(User.name == 'Rakoto')
rakoto.age = 31
rakoto.save()
Famafana
rakoto.delete_instance()

Endri-javatra Mandroso amin'ny Peewee ORM

[hanova]
  • Fifandraisana (Relationships) :

Peewee ORM dia manohana ny fifandraisana eo amin'ny modely toy ny ForeignKey sy ny Many-to-Many.

ForeignKey (One-to-Many)
class Address(BaseModel):
    user = ForeignKeyField(User, backref='addresses')
    city = CharField()
    street = CharField()

address = Address.create(user=rakoto, city='Antananarivo', street='Lalana Andrianampoinimerina')
Many-to-Many
class Group(BaseModel):
    name = CharField()

class UserGroup(BaseModel):
    user = ForeignKeyField(User)
    group = ForeignKeyField(Group)

group = Group.create(name='Developers')
user_group = UserGroup.create(user=rakoto, group=group)
  • Transactions :

Peewee ORM dia manohana ny transactions ho an'ny fanavaozana angona miverina.

with db.atomic():
    user = User.create(name='Rabe', age=25, email='rabe@example.com')
    address = Address.create(user=user, city='Toamasina', street='Lalana Ratsimilaho')
  • Queries Mandroso :

Peewee ORM dia manohana queries mandroso toy ny fn sy ny Case.

Fn
from peewee import fn

adult_users = User.select().where(User.age >= 18).order_by(fn.LOWER(User.name))
for user in adult_users:
    print(user.name)
Case
from peewee import Case

age_group = Case(None, (
    (User.age < 18, 'zaza'),
    (User.age < 30, 'tanora'),
    (User.age >= 30, 'olondehibe'),
), 'tsy fantatra')

users = User.select(User.name, age_group.alias('age_group'))
for user in users:
    print(user.name, user.age_group)
  • Mifandray amin'ny tahiry maro :

Peewee ORM dia mamela ny fampiasana tahiry maromaro amin'ny alalan'ny famoronana motera maro.

db1 = SqliteDatabase('database1.db')
db2 = SqliteDatabase('database2.db')

class User(BaseModel):
    name = CharField()
    age = IntegerField()

    class Meta:
        database = db1

class Product(BaseModel):
    name = CharField()
    price = FloatField()

    class Meta:
        database = db2

db1.connect()
db2.connect()
  • Modely namboarina (Custom Models) :

Azonao atao ny mamorona modely namboarina mba hikarakarana endri-javatra manokana.

class TimestampedModel(Model):
    created_at = DateTimeField(default=datetime.datetime.now)
    updated_at = DateTimeField()

    def save(self, *args, **kwargs):
        self.updated_at = datetime.datetime.now()
        return super().save(*args, **kwargs)

    class Meta:
        abstract = True

class Article(TimestampedModel):
    title = CharField()
    content = TextField()

Fehiny

[hanova]

Peewee ORM dia fitaovana mahery vaika sy kely ho an'ny fitantanana tahiry amin'ny alalan'ny modely Python. Amin'ny alalan'ny fahalalana ireo endri-javatra fototra sy mandroso ireo, dia afaka mamorona rindrambaiko matotra sy manintona ianao amin'ny alalan'ny Peewee ORM, ka manamora ny fitantanana angona sy ny fifandraisana amin'ny tahiry.