介绍
Peewee是一个轻量级的ORM(对象关系映射)库,用于Python应用程序中的数据库访问。它与SQLite、MySQL、PostgreSQL等关系数据库兼容,并提供简单易于使用的API进行查询和数据操作。本文将介绍Peewee的使用,以便您能够在Python应用程序中更轻松地操作数据库。
Peewee的基本用法
创建数据库连接
使用Peewee操作数据库需要先创建一个数据库连接。下面是一个使用SQLite数据库连接的例子:
import peewee db = peewee.SqliteDatabase('my_database.db')
定义模型
Peewee的核心是模型(Model)对象,模型代表关系数据库中的表。定义Peewee模型需要构建一个继承自peewee.Model的类,并定义类的属性作为模型的字段。例如,下面这个模型定义了一个名为“Person”的表,包含名字和年龄字段:
class Person(peewee.Model): name = peewee.CharField() age = peewee.IntegerField() class Meta: database = db
创建表格
当定义好模型后,需要使用Peewee的migrate()函数创建表格。代码如下:
db.connect() db.create_tables([Person]) db.close()
添加数据
使用Peewee添加数据非常简单。首先,创建模型对象并设置字段值,然后调用save()方法将对象保存到数据库。下面是一个添加一个名为“Alice”、年龄为25的人的例子:
person = Person(name='Alice', age=25) person.save()
查询数据
Peewee模型提供了易于使用的API进行查询和数据操作。下面是一个查询数据库中所有名字以“A”开头的人的例子:
query = Person.select().where(Person.name.startswith('A')) for person in query: print(person.name)
Peewee的高级用法
数据关系
Peewee通过基础模型和外键来支持数据关系。外键是一个模型字段,指向另一个表中的主键。下面是一个定义两个模型之间关系的例子:
class Person(peewee.Model): name = peewee.CharField() class Meta: database = db class Address(peewee.Model): person = peewee.ForeignKeyField(Person, backref='addresses') street = peewee.CharField() class Meta: database = db
在这个例子中,Address模型包含一个指向Person模型的外键。Person模型还定义了一个backref属性,它定义了关系的反向引用。backref属性将自动在Person模型上创建一个名为“addresses”的属性,该属性包含对Address对象的关联。
批量操作
Peewee支持多种批量操作,例如插入/更新、删除和选择。下面是一个将多个Person对象插入到数据库的例子:
persons = [ Person(name='Bob'), Person(name='Carol'), Person(name='Dave'), ] Person.insert_many(persons).execute()
自定义查询
Peewee还允许您使用原始SQL查询数据库。下面是一个使用原始SQL查询数据库的例子:
query = Person.raw('SELECT * FROM persons WHERE persons.name LIKE ?', ('Bob%',)) for person in query: print(person.name)
总结
本文介绍了Peewee的基本用法和高级用法,包括创建数据库连接、定义模型、创建表格、添加和查询数据、数据关系、批量操作和自定义查询。Peewee是一个轻量级的ORM库,易于使用和扩展,适用于使用SQLite、MySQL、PostgreSQL等关系数据库的Python应用程序。