Content
Ⅰ 安装
Ⅱ 链接数据库
Ⅲ 建表
Ⅳ 增删改
Ⅴ 基础查询
Ⅵ ForeignKey
Ⅷ 事务参考官方文档:http://docs.peewee-orm.com/en/latest/index.html
1. 安装
pip install peewee
2. 链接数据库
以mysql 为例(Peewee提供mysql,postgresql,sqllite)的支持
import peewee
settings = {'host': 'localhost', 'password': '', 'port': 3306, 'user': 'root'} db = peewee.MySQLDatabase("test",**settings)
3. 建表
3.1 表关系
class Person(Model): name = CharField(verbose_name='姓名', max_length=10, null=False, index=True) passwd = CharField(verbose_name='密码', max_length=20, null=False, default='123456') email = CharField(verbose_name='邮件', max_length=50, null=True, unique=True) gender = IntegerField(verbose_name='姓别', null=False, default=1) birthday = DateField(verbose_name='生日', null=True, default=None) is_admin = BooleanField(verbose_name='是否是管理员', default=True) class Meta: database = db # 这里是数据库链接,为了方便建立多个表,可以把这个部分提炼出来形成一个新的类
table_name = 'persons' # 这里可以自定义表名
# 例如:
class BaseModel(Model): class Meta: database = db class Person(BaseModel): name = CharField()
全部数据类型
| Field Type | Sqlite | Postgresql | MySQL |
|---|---|---|---|
IntegerField |
integer | integer | integer |
BigIntegerField |
integer | bigint | bigint |
SmallIntegerField |
integer | smallint | smallint |
AutoField |
integer | serial | integer |
FloatField |
real | real | real |
DoubleField |
real | double precision | double precision |
DecimalField |
decimal | numeric | numeric |
CharField |
varchar | varchar | varchar |
FixedCharField |
char | char | char |
TextField |
text | text | longtext |
BlobField |
blob | bytea | blob |
BitField |
integer | bigint | bigint |
BigBitField |
blob | bytea | blob |
UUIDField |
text | uuid | varchar(40) |
DateTimeField |
datetime | timestamp | datetime |
DateField |
date | date | date |
TimeField |
time | time | time |
TimestampField |
integer | integer | integer |
IPField |
integer | bigint | bigint |
BooleanField |
integer | boolean | bool |
BareField |
untyped | not supported | not supported |
ForeignKeyField |
integer | integer | integer |
null = False – 可否为空 index = False – index索引 unique = False – unique索引 column_name = None – string representing the underlying column to use if different, useful for legacy databases default = None – 默认值,如果callable, 会调用生成! primary_key = False – 主键 constraints = None - a list of one or more constraints, e.g. [Check('price > 0')] sequence = None – sequence to populate field (if backend supports it) collation = None – collation to use for ordering the field / index unindexed = False – indicate field on virtual table should be unindexed (SQLite-only) choices = None – an optional iterable containing 2-tuples of value, display help_text = None – string representing any helpful text for this field verbose_name = None – string representing the “user-friendly” name of this field