github地址:https://github.com/05bit/peewee-async
Install
Install with pip
for PostgreSQL:
pip install --pre peewee-async; pip install aiopg
or for MySQL:
pip install --pre peewee-async; pip install aiomysql
使用案例
model
from datetime import datetime
from peewee import *
import peewee_async
database = peewee_async.MySQLDatabase(
'sanguo', host='127.0.0.1', port=3306, user='root', password='123456')
class BaseModel(Model):
add_time = DateTimeField(default=datetime.now(), verbose_name="添加时间")
class Meta:
database = database
# 供应商
class Supplier(BaseModel):
name = CharField(max_length=100, verbose_name="名称", index=True)
address = CharField(max_length=100, verbose_name="联系地址")
phone = CharField(max_length=11, verbose_name="联系方式")
class Meta:
table_name = "supplier"
class Goods(BaseModel):
supplier = ForeignKeyField(Supplier, verbose_name="商家", backref="goods")
# 新建表时在name字段上加个索引
name = CharField(max_length=100, verbose_name="商品名称", index=True)
click_num = IntegerField(default=0, verbose_name="点击数")
goods_num = IntegerField(default=0, verbose_name="库存数")
price = FloatField(default=0.0, verbose_name="价格")
brief = TextField(verbose_name="商品简介")
class Meta:
table_name = "goods"
objects = peewee_async.Manager(database)
database.set_allow_sync(False)
peewee_async
import asyncio
from chapter04.models.model import Goods
from chapter04.models.model import objects
async def handler():
# # 之前的.save方法是同步的 这里不能用了
# # 保存一条记录
# await objects.create(Goods, supplier_id=3, name="娃哈哈", click_num=20,
# goods_num=1000, price=500, brief="宗庆后")
# 查询所有的记录
# 本质 使用await objects.execute(),执行peewee的sql语句
goods = await objects.execute(Goods.select())
for good in goods:
print(good.name)
loop = asyncio.get_event_loop()
loop.run_until_complete(handler())