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)複製代碼
相關文章
相關標籤/搜索