• 轻量级ORM库peewee的基本使用


    peewee

    Peewee是一种简单而小的ORM。它只有很少的(但富有表现力的)概念,使它易于学习和直观的使用。它支持sqlite、mysql、postgresql和cockroachdb

    官网文档传送门: peewee
    GitHub:peewee

    from peewee import *
    
    db = MySQLDatabase('mydb', host="localhost", user='root', passwd='12345', port=3306)
    
    
    # 定义模型类Person
    class Person(Model):
      name = CharField()
      birthday = DateField()
      is_relative = BooleanField()
    
      class Meta:
        database = db
        
    def test_create_table():
      Person.create_table()
      # 还可以这样创建多张表
      # database.create_tables([Person])
    
    
    def test_insert_data():
      # 在Person表插入一条数据
      p = Person(name='哆啦A梦', birthday=date(2000, 1, 1), is_relative=True)
      p.save()
    
    
    def test_delete_data():
      # 删除姓名为李云龙的数据
      Person.delete().where(Person.name == '李云龙').execute()
      
      # 已实例化的数据, 使用delete_instance
      p = Person(name='哆啦A梦', birthday=date(2000, 1, 1), is_relative=False)
      p.id = 1
      p.save()
      p.delete_instance()
    
    
    def test_update_data():
      # 已经实例化的数据,指定了id这个primary key,则此时保存相当于更新数据
      p = Person(name='哆啦A梦', birthday=date(2000, 1, 1), is_relative=False)
      p.id = 1
      p.save()
    
      # 更新姓名为哆啦A梦的用户的birthday数据
      q = Person.update({Person.birthday: date(1900, 1, 1)}).where(Person.name == '哆啦A梦')
      q.execute()
    
    
    def test_query_data():
      # 查询单条数据
      p = Person.get(Person.name == '哆啦A梦')
      print(p.name, p.birthday, p.is_relative)
    
      # 使用where().get()查询
      p = Person.select().where(Person.name == '哆啦A梦').get()
      print(p.name, p.birthday, p.is_relative)
    
      # 查询多条数据
      persons = Person.select().where(Person.is_relative == True)
      for p in persons:
        print(p.name, p.birthday, p.is_relative)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    #创建表,然后插入数据
    if __name__=="__main__":
      Person.create_table()
      p = Person(name='哆啦A梦', birthday=date(2000, 1, 1), is_relative=True)
      p.save()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    以上即是peewee库常用的增删改查等基础方法

    #批量查询
    if __name__ == "__main__":
      for i in range(1, 5):
        p = Person(name=f'小张{i}', birthday=date(2008, 8, 8), is_relative=False)
        p.save()
      # 查询多条数据
      persons = Person.select().where(Person.is_relative == False)
      for p in persons:
        print(p.name, p.birthday, p.is_relative)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    #测试:更新数据
    
    if __name__ == "__main__":
      p = Person(name='李云龙', birthday=date(2001, 1, 1), is_relative=False)
      p.save()
      # 更新birthday数据
      q = Person.update({Person.birthday: date(2002, 1, 1)}).where(Person.name == '李云龙')
      q.execute()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    #测试:删除数据
    if __name__=="__main__":
      Person.delete().where(Person.name == '哆啦A梦').execute()
    
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    搭建ELK+Filebead+zookeeper+kafka实验
    【List篇】LinkedList 详解
    Opencv项目——信用卡数字识别Python代码实现
    个人实现在线支付,一种另类的在线支付解决方案
    leetcode-23.合并K个升序链表
    BERT 相关资源整理
    VMWare:使用命令更新或升级 VMWare ESXi 主机
    极客日报:苹果称刘海屏是个“聪明设计”;淘宝推出表情购物功能;Rust 1.56.0发布
    Java知识点08——多线程
    Golang CSV Reader
  • 原文地址:https://blog.csdn.net/qq_42183962/article/details/126463516