当前位置: 首页 / 技术分享 / 正文
好程序员Python学习路线介绍Peewee怎么用

2019-11-20

北京Python培训 Python培训 好程序员 Peewee

  好程序员Python学习路线介绍Peewee怎么用,SQLAlchemy 功能很强大,文档很丰富,是一个重量级的 ORM 框架。本文给大家介绍一个小清新,轻量级 ORM 框架 Peewee,支持 Python 2.7+ 3.4+,支持 SQLiteMySQL 以及 PostgreSQL。如果对 Django ORM 比较熟悉,那么 Peewee 的学习成本会非常低。

Python2

安装

 

pip install peewee

 

模型定义

 

python

from peewee import *

 

db = SqliteDatabase('people.db')

 

class BaseModel(Model):

    class Meta:

        database = db

 

class Person(BaseModel):

    name = CharField(verbose_name='姓名', max_length=10, null=False, index=True)

    gender = IntegerField(verbose_name='姓别', null=False, default=1)

    birthday = DateField(verbose_name='生日', null=True, default=None)

 

    class Meta:

        table_name = 'people'

 

首先定义了我们的模型类`Person`(用过 Django 的同学一定对这种模型定义方式十分熟悉,跟 Django 中模型的定义十分相似),使用 `SqliteDatabase`指定了使用的数据库`people.db`

 

然后定义了`Person`这个表的数据字段,如果不指定主键,`peewee`会自动帮我们创建一个`id`的字段作为主键。每一个`Field`都有几个参数可以配置,长度的大小,是否为空(`null`)和默认值(`default`),索引(`index`)和唯一索引(`unique`)几个常见的数据库选项。

 

创建数据库表

 

python

Person.create_table()

db.create_tables([Person])

 

 

操作数据库

 

-

 

  直接创建实例,然后调用实例方法`save()`

 

  也可以通过`create()`类方法创建实例并保存。

 

  python

  p = Person(name='tom', gender=1, birthday=date(2000, 1, 1))

  p.save()

  

  jerry = Person.create(name='jerry', gender=0, birthday=date(1999, 12, 1))

  

 

 

  使用`delete().where().execute()`进行条件删除,`where()`是删除条件,`execute()`执行删除操作。

 

  如果是已经查询出来的实例对象,则调用实例方法`delete_instance()`进行删除。

 

  python

  删除姓名为 tom 的数据

  Person.delete().where(Person.name=='tom').execute()

  

  已经实例化的对象, 调用 delete_instance() 进行删除操作

  p = Person(name='tom', gender=1, birthday=date(2000, 1, 1))

  p.save()

  p.delete_instance()

  

 

 

  使用`update().wahere().excute()`进行条件更新。针对已经查询到的数据对象,在修改完对象属性后,直接`save()`更新。

 

  python

  已经实例化的对象,且拥有 id 这个 primary key,则修改属性后,save 即是更新操作

  p = Person(name='tom', gender=1, birthday=date(2000, 1, 1))

  p.save()

  p.gender = 0

  p.save()

  

  更新 jerry birthday 数据

  q = Person.update({Person.birthday: date(1999, 12, 12)}).where(Person.name=='jerry')

  q.execute()

  

 

 

  单条数据查询使用`Person.get()`,也可以使用`Person.select().where().get()`

 

  多条数据查询使用`Person.select().where()`

 

  python

  查询单条数据

  p = Person.select().where(Person.name=='tom').get()

  print(p.name, p.gender, p.birthday)

  

  使用简写 Model.get()

  p = Person.get(Person.name=='tom')

  print(p.name, p.gender, p.birthday)

  

  查询多条数据

  people = Person.select().where(Person.gender==1)

  for p in people:

      print(p.name, p.gender, p.birthday)

  好程序员Python培训官网:http://www.goodprogrammer.org/python_class.shtml

好程序员开班动态

More+
  • HTML5大前端 <高端班>

    开班时间:2020-02-17(北京)

    开班盛况

    开班时间:2020-03-02(深圳)

    开班盛况
  • 大数据+人工智能 <好程序员严选班>

    开班时间:2019-12-23(北京)

    开班盛况
  • 大数据+人工智能 <好程序员班>

    开班时间:2020-02-24(杭州)

    开班盛况

    开班时间:2020-02-17(北京)

    开班盛况
  • JavaEE分布式开发 <高端班>

    开班时间:2020-03-09(北京)

    开班盛况
  • Python全栈+人工智能 <高端班>

    开班时间:2019-07-22(北京)

    开班盛况
  • 云计算开发 <高端班>

    开班时间:2020-02-24(北京)

    开班盛况
在线咨询
免费试听
入学教程
立即报名

Copyright 2011-2020 北京千锋互联科技有限公司 .All Right 京ICP备12003911号-5 京公安网11010802011455号