浅谈浅谈Python peewee 使用经验使用经验
主要介绍了浅谈Python peewee 使用经验,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编
过来看看吧
本文使用案例是基于 python2.7 实现
以下内容均为个人使用 peewee 的经验和遇到的坑,不会涉及过多的基本操作。所以,没有使用过 peewee,可以先阅读文档
正确性和覆盖面有待提高,如果遇到新的问题欢迎讨论。
一、介绍一、介绍
Peewee 是一个简单、轻巧的 Python ORM。
1. 简单、轻巧、富有表现力(原词 expressive )的ORM
2. 支持python版本 2.6+ 和 3.2+
3. 支持数据库包括:sqlite, mysql and postgresql
4. 包含一堆实用的扩展在 playhouse 模块中
总而言之,peewee 可以完全可以应付个人或企业的中小型项目的 Model 层,上手容易,功能很强大。
二、基本使用方法二、基本使用方法
from peewee import *
db = SqliteDatabase('people.db')
class BaseModel(Model):
class Meta:
database = db # This model uses the "people.db" database.
class Person(BaseModel):
name = CharField()
birthday = DateField()
is_relative = BooleanField()
基本的使用方法,推荐阅读文档--quickstart
三、推荐使用姿势三、推荐使用姿势
下面介绍一些我在使用过程的经验和遇到的坑,希望可以帮助大家更好的使用 peewee。
3.1 连接数据库连接数据库
连接数据库时,推荐使用 playhouse 中的 db_url 模块。db_url 的 connect 方法可以通过传入的 URL 字符串,生成数据库连接。
3.1.1 connect(url, **connect_params)
通过传入的 url 字符串,创建一个数据库实例
url形如:
1. mysql://user:passwd@ip:port/my_db 将创建一个 本地 MySQL 的 my_db 数据库的实例(will create a MySQLDatabase
instance)
2. mysql+pool://user:passwd@ip:port/my_db?charset=utf8&max_connections=20&stale_timeout=300 将创建一个本地 MySQL 的
my_db 的连接池,最大连接数为20(In a multi-threaded application, up to max_connections will be opened. Each thread (or, if
using gevent, greenlet) will have it's own connection. ),超时时间为300秒(will create a PooledMySQLDatabase instance)
注意:charset 默认为utf8。如需要支持 emoji ,charset 设置为utf8mb4,同时保证创建数据库时的字符集设置正确CREATE DATABASE
mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;。
支持的 schemes:
1. apsw: APSWDatabase
2. mysql: MySQLDatabase
3. mysql+pool: PooledMySQLDatabase
4. postgres: PostgresqlDatabase
5. postgres+pool: PooledPostgresqlDatabase
6. postgresext: PostgresqlExtDatabase
7. postgresext+pool: PooledPostgresqlExtDatabase
8. sqlite: SqliteDatabase
9. sqliteext: SqliteExtDatabase
10. sqlite+pool: PooledSqliteDatabase
11. sqliteext+pool: PooledSqliteExtDatabase
3.1.2 推荐姿势推荐姿势