Python学习教程干货分享:SQLAlchemy太庞大,不妨试试这位小清新-Peewee

SQLAlchemy 功能很强大,文档很丰富,是一个重量级的 ORM 框架。本文给你们介绍一个小清新,轻量级 ORM 框架 Peewee,支持 Python 2.7+ 和 3.4+,支持 SQLite、MySQL 以及 PostgreSQL。若是对 Django 的 ORM 比较熟悉,那么 Peewee 的学习成本会很是低。数据库

安装

pip install peewee复制代码

模型定义

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.dbbash

而后定义了Person这个表的数据字段,若是不指定主键,peewee会自动帮咱们建立一个id的字段做为主键。每个Field都有几个参数能够配置,长度的大小,是否为空(null)和默认值(default),索引(index)和惟一索引(unique)几个常见的数据库选项。框架

建立数据库表

Person.create_table()
# 或
db.create_tables([Person])复制代码

操做数据库

  • 学习

    直接建立实例,而后调用实例方法save()ui

    也能够经过create()类方法建立实例并保存。spa

    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))复制代码
  • code

    使用delete().where().execute()进行条件删除,where()是删除条件,execute()执行删除操做。对象

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

    # 删除姓名为 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()复制代码
  • ip

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

    # 已经实例化的对象,且拥有 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()

    # 查询单条数据
    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)复制代码
相关文章
相关标签/搜索