初始化資料庫并設計模型
class 模型名稱(Model) -> 一個class就是一張表
from peewee import SqliteDatabase
from peewee import Model
from peewee import CharField,DateField,ForeignKeyField
db = SqliteDatabase('people.db')
class Person(Model):
name = CharField()
birthday = DateField()
class Meta:
database = db
設計兩個表:Person和Pet
from peewee import SqliteDatabase
from peewee import Model
from peewee import CharField,DateField,ForeignKeyField
db = SqliteDatabase('people.db')
class Person(Model):
name = CharField()
birthday = DateField()
class Meta:
database = db
class Pet(Model):
owner = ForeignKeyField(Person,backref='pets')
name = CharField()
animal_type = CharField()
class Meta:
database = db
生成資料庫檔案
db.connect() -> 連接配接資料庫
db.create_tables([類1, 類2, …]) -> 建立表
from peewee import SqliteDatabase
from peewee import Model
from peewee import CharField,DateField,ForeignKeyField
db = SqliteDatabase('people.db')
class Person(Model):
name = CharField()
birthday = DateField()
class Meta:
database = db
class Pet(Model):
owner = ForeignKeyField(Person,backref='pets')
name = CharField()
animal_type = CharField()
class Meta:
database = db
db.connect()
db.create_tables([Person,Pet])
添加資料
執行個體化一個類,然後.save()
from peewee import SqliteDatabase
from peewee import Model
from peewee import CharField,DateField,ForeignKeyField
from datetime import date
db = SqliteDatabase('people.db')
class Person(Model):
name = CharField()
birthday = DateField()
class Meta:
database = db
class Pet(Model):
owner = ForeignKeyField(Person,backref='pets')
name = CharField()
animal_type = CharField()
class Meta:
database = db
# db.connect()
# db.create_tables([Person,Pet])
uncle_bob = Person(name='Bob', birthday=date(1960, 1, 15))
uncle_bob.save()
直接使用類的.create()方法,不用再save()
from peewee import SqliteDatabase
from peewee import Model
from peewee import CharField,DateField,ForeignKeyField
from datetime import date
db = SqliteDatabase('people.db')
class Person(Model):
name = CharField()
birthday = DateField()
class Meta:
database = db
class Pet(Model):
owner = ForeignKeyField(Person,backref='pets')
name = CharField()
animal_type = CharField()
class Meta:
database = db
# db.connect()
# db.create_tables([Person,Pet])
# uncle_bob = Person(name='Bob', birthday=date(1960, 1, 15))
# uncle_bob.save()
sam = Person.create(name='Sam', birthday=date(1970, 2, 25))
擷取一條資料,如果沒有就添加一條資料
. get_or_create()
傳回一個執行個體以及是否有建立新資料
from peewee import SqliteDatabase
from peewee import Model
from peewee import CharField,DateField,ForeignKeyField
from datetime import date
db = SqliteDatabase('people.db')
class Person(Model):
name = CharField()
birthday = DateField()
class Meta:
database = db
class Pet(Model):
owner = ForeignKeyField(Person,backref='pets')
name = CharField()
animal_type = CharField()
class Meta:
database = db
# db.connect()
# db.create_tables([Person,Pet])
# uncle_bob = Person(name='Bob', birthday=date(1960, 1, 15))
# uncle_bob.save()
# sam = Person.create(name='Sam', birthday=date(1970, 2, 25))
user,created = Person.get_or_create(name = 'Sam')
print(user.name, user.birthday, created)
輸出結果:
user,created = Person.get_or_create(name = 'Kate', birthday=date(1980,2,2))
print(user.name, user.birthday, created)
輸出結果:
修改資料
擷取一個執行個體并修改,用.save()儲存
from peewee import SqliteDatabase
from peewee import Model
from peewee import CharField,DateField,ForeignKeyField
from datetime import date
db = SqliteDatabase('people.db')
class Person(Model):
name = CharField()
birthday = DateField()
class Meta:
database = db
class Pet(Model):
owner = ForeignKeyField(Person,backref='pets')
name = CharField()
animal_type = CharField()
class Meta:
database = db
# db.connect()
# db.create_tables([Person,Pet])
# uncle_bob = Person(name='Bob', birthday=date(1960, 1, 15))
# uncle_bob.save()
# sam = Person.create(name='Sam', birthday=date(1970, 2, 25))
# user,created = Person.get_or_create(name = 'Kate', birthday=date(1980,2,2))
# print(user.name, user.birthday, created)
uncle_bob = Person.get(name='Bob')
uncle_bob.birthday = date(1961, 1, 15)
uncle_bob.save()
正确的原位修改方法
query = Person.update(name='Mr.' + Person.name)
query.execute()
删除一條資料
Kate = Person.get(Person.name.endswith('Kate'))
Kate.delete_instance()
删除多條資料
from peewee import SqliteDatabase
from peewee import Model
from peewee import CharField,DateField,ForeignKeyField
from datetime import date
db = SqliteDatabase('people.db')
class Person(Model):
name = CharField()
birthday = DateField()
class Meta:
database = db
class Pet(Model):
owner = ForeignKeyField(Person,backref='pets')
name = CharField()
animal_type = CharField()
class Meta:
database = db
# db.connect()
# db.create_tables([Person,Pet])
# uncle_bob = Person(name='Bob', birthday=date(1960, 1, 15))
# uncle_bob.save()
# sam = Person.create(name='Sam', birthday=date(1970, 2, 25))
# user,created = Person.get_or_create(name = 'Kate', birthday=date(1980,2,2))
# print(user.name, user.birthday, created)
# uncle_bob = Person.get(name='Bob')
# uncle_bob.birthday = date(1961, 1, 15)
# uncle_bob.save()
# query = Person.update(name='Mr.' + Person.name)
# query.execute()
# Kate = Person.get(Person.name.endswith('Kate'))
# Kate.delete_instance()
query = Person.delete().where(Person.name.endswith('Bob'))
query.execute()