美文网首页
Peewee 小结 2018-12-11

Peewee 小结 2018-12-11

作者: My_ANGEL | 来源:发表于2018-12-11 17:37 被阅读0次

    # 当我们使用外健关系建立模型之间的关系时,事情变得有趣。这对peewee来说很简单:

    class Pet(Model):

    owner = ForeignkeyField(Person, backref='pets')

    name = CharField()

    aninal_type = CharField()

    class Meta:

    database = db # this model uses the "people,.db" database

    储存数据:

    让我们从一些人的填充数据库开始。我们将使用save()和create()方法添加和更新人们的记录。

    from datetime import date

    uncle_bob = Person(name='Bob', birthday=date(1992, 8, 29))

    uncle_bob.save() # bob is now stored in the database

    # Retuen: 1

    # !! 调用save(),将返回修改的行数。

    george = Person.create(name='George', birthday=date(1994, 8, 18))

    lebron = Person.create(name='lebron', birthday=date(1987, 12, 30))

    要更新行,请修改模型实例并调用save()以保留更改。 在这里将更改George的名称,然后将更改后的名字保存在数据库中:

    george.name = 'George L.'

    george.save()  # Update george's name in the database.

    # Return: 1

    # 在数据库中加一些动物🐒

    bob_kitty = Pet.create(owner=uncle_bob, name='Kitty', animal_type='cat')

    lebron_fido = Pet.create(owner=lebron, name='Fido' animal_type='dog')

    lebrom_mittens = Pet.create(owner=lebron, name='Mittens', animal_type='cat')

    lebrom_mittens_jr = Pet.create(owner=lebron, name='Mittens_jr', animal_type='cat')

    经过长时间的生命,米腾斯病了并且死了。我们需要将它从数据库中删除掉:

    lebrom_mittens.delete_intance() # he had a great life

    # Returns: 1

    注意 :返回值delete_instance()是从数据库中删除的行数。

    lebron_fido.owner = uncle_bob

    lebron_fido.save()

    要从数据库中获取单个记录,请使用select.get():

    george = Person.select().where(Person.name == 'george L.').get()

    我们也可以使用等效的简写Model.get():

    george = Person.get(Person.name == 'George L.')

    让我们列出数据库中所有的人:

    fro Person in Person.select():

    prints(person.name)

    # prints:

    #Bob

    #george L.

    #Herb

    让我们列出所有猫及其主人的名字:

    query = Pet.select().where(Pet.animal_type == 'cat')

    for pet in query:

    print(pet.name, pet.owner.name)

    # prints:

    # kitty Bob

    # Mittens Jr lebron

    query = (Pet

    .selcet(Pet, Person)

    .join(Pet.animal_type == 'cat'))

    for pet in query:

    print(pet.name, pet.owner.name)

    # prints:

    #Kitty Bob

    #Mittens Jr lebron

    让我们得到鲍勃拥有的所有宠物:

    for pet in pet .select().join(person).where(person.name == 'Bob'):

    print(pet.name)

    # prints:

    # kitty

    # fido

    我们可以在这里做另一件很酷的事情来获得鲍勃的宠物。由于我们已经有了一个代表鲍勃的对象,我们可以这样做:

    for pet in Pet.select().where(Pet.owner == uncle_bob):

    print(pet.name)

    排序:让我们添加一个order_by()子句确保按字母对它们进行排序:

    for pet in Pet.select().where(Pet.owner == uncle_bob).order_by(Pet.name):

    print(pet.name)

    # prints:

    # Fido

    # kitty

    我们现在列出所有人, 最年轻到最老的人:

    for person in Person.select().order_by(Person.birthday.desc()):

    print(person.name, person.birthday)

    # prints:

    # george 1994-08-18

    # Bob 1992-08-29

    # lebron 1987-12-30

    最后一个问题。使用SQL函数查找名称以大小或者写G开头的所有人:

    expression = fn.Lower(fn.Substr(person.name, 1, 1)) == 'g'

    fro person in person.select().where(expression):

    print(person.name)

    # prints:

    # george L.

    相关文章

      网友评论

          本文标题:Peewee 小结 2018-12-11

          本文链接:https://www.haomeiwen.com/subject/qrpehqtx.html