Skip to content

Commit 974c583

Browse files
authored
feat: update readme and examples (#271)
* feat: update readme and examples
1 parent de4bcb8 commit 974c583

File tree

3 files changed

+24
-25
lines changed

3 files changed

+24
-25
lines changed

README.md

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Overview
1414
* Requires Python 3.8+
1515
* Has support for PostgreSQL via [aiopg](https://github.com/aio-libs/aiopg)
1616
* Has support for MySQL via [aiomysql](https://github.com/aio-libs/aiomysql)
17-
* Single point for high-level async API
17+
* Asynchronous analogues of peewee sync methods with prefix aio_
1818
* Drop-in replacement for sync code, sync will remain sync
1919
* Basic operations are supported
2020
* Transactions support is present, yet not heavily tested
@@ -53,15 +53,15 @@ import peewee_async
5353

5454
# Nothing special, just define model and database:
5555

56-
database = peewee_async.PostgresqlDatabase(
56+
database = peewee_async.PooledPostgresqlDatabase(
5757
database='db_name',
5858
user='user',
5959
host='127.0.0.1',
6060
port='5432',
6161
password='password',
6262
)
6363

64-
class TestModel(peewee.Model):
64+
class TestModel(peewee_async.AioModel):
6565
text = peewee.CharField()
6666

6767
class Meta:
@@ -73,17 +73,13 @@ TestModel.create_table(True)
7373
TestModel.create(text="Yo, I can do it sync!")
7474
database.close()
7575

76-
# Create async models manager:
77-
78-
objects = peewee_async.Manager(database)
79-
8076
# No need for sync anymore!
8177

8278
database.set_allow_sync(False)
8379

8480
async def handler():
85-
await objects.create(TestModel, text="Not bad. Watch this, I'm async!")
86-
all_objects = await objects.execute(TestModel.select())
81+
await TestModel.aio_create(text="Not bad. Watch this, I'm async!")
82+
all_objects = await TestModel.select().aio_execute()
8783
for obj in all_objects:
8884
print(obj.text)
8985

@@ -92,7 +88,7 @@ loop.run_until_complete(handler())
9288
loop.close()
9389

9490
# Clean up, can do it sync again:
95-
with objects.allow_sync():
91+
with database.allow_sync():
9692
TestModel.drop_table(True)
9793

9894
# Expected output:

examples/aiohttp_example.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
from secrets import token_hex
55
from datetime import datetime
66
from aiohttp import web
7-
from peewee import Model, CharField, TextField, DateTimeField
8-
from peewee_async import PooledPostgresqlDatabase, Manager
7+
from peewee import CharField, TextField, DateTimeField
8+
from peewee_async import PooledPostgresqlDatabase, AioModel
99

1010
logger = logging.getLogger(__name__)
1111

@@ -19,14 +19,12 @@
1919
max_connections=10,
2020
)
2121

22-
objects = Manager(database)
23-
2422
app = web.Application()
2523

2624
routes = web.RouteTableDef()
2725

2826

29-
class Post(Model):
27+
class Post(AioModel):
3028
title = CharField(unique=True)
3129
key = CharField(unique=True, default=lambda: token_hex(8))
3230
text = TextField()
@@ -48,7 +46,7 @@ def add_post(title, text):
4846
async def get_post_endpoint(request):
4947
query = dict(request.query)
5048
post_id = query.pop('p', 1)
51-
post = await objects.get_or_none(Post, id=post_id)
49+
post = await Post.aio_get_or_none(id=post_id)
5250
if post:
5351
return web.Response(text=post.text)
5452
else:
@@ -68,10 +66,10 @@ async def update_post_endpoint(request):
6866
except Exception as exc:
6967
return web.Response(text=str(exc), status=400)
7068

71-
post = await objects.get_or_none(Post, id=post_id)
69+
post = await Post.aio_get_or_none(id=post_id)
7270
if post:
7371
post.text = text
74-
await objects.update(post)
72+
await post.aio_save()
7573
return web.Response(text=post.text)
7674
else:
7775
return web.Response(text="Not found", status=404)

examples/tornado_sample.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,17 @@
2626
# Set up database and manager
2727
database = peewee_async.PooledPostgresqlDatabase('test')
2828

29+
2930
# Define model
30-
class TestNameModel(peewee.Model):
31+
class TestNameModel(peewee_async.AioModel):
3132
name = peewee.CharField()
3233
class Meta:
3334
database = database
3435

3536
def __str__(self):
3637
return self.name
3738

39+
3840
# Create table, add some instances
3941
TestNameModel.create_table(True)
4042
TestNameModel.get_or_create(id=1, defaults={'name': "TestNameModel id=1"})
@@ -45,7 +47,8 @@ def __str__(self):
4547
AsyncIOMainLoop().install()
4648
app = tornado.web.Application(debug=True)
4749
app.listen(port=8888)
48-
app.objects = peewee_async.Manager(database)
50+
app.database = database
51+
4952

5053
# Add handlers
5154
class RootHandler(tornado.web.RequestHandler):
@@ -56,7 +59,7 @@ class RootHandler(tornado.web.RequestHandler):
5659
"""
5760
async def post(self):
5861
name = self.get_argument('name')
59-
obj = await self.application.objects.create(TestNameModel, name=name)
62+
obj = await TestNameModel.aio_create(name=name)
6063
self.write({
6164
'id': obj.id,
6265
'name': obj.name
@@ -70,14 +73,15 @@ async def get(self):
7073
return
7174

7275
try:
73-
obj = await self.application.objects.get(TestNameModel, id=obj_id)
76+
obj = await TestNameModel.aio_get(id=obj_id)
7477
self.write({
7578
'id': obj.id,
7679
'name': obj.name,
7780
})
7881
except TestNameModel.DoesNotExist:
7982
raise tornado.web.HTTPError(404, "Object not found!")
8083

84+
8185
class CreateHandler(tornado.web.RequestHandler):
8286
async def get(self):
8387
loop = asyncio.get_event_loop()
@@ -95,12 +99,13 @@ async def get(self):
9599

96100
async def get_or_create(self):
97101
obj_id = self.get_argument('id', None)
98-
async with self.application.objects.atomic():
99-
obj, created = await self.application.objects.get_or_create(
100-
TestNameModel, id=obj_id,
102+
async with self.application.database.aio_atomic():
103+
obj, created = await TestNameModel.aio_get_or_create(
104+
id=obj_id,
101105
defaults={'name': "TestNameModel id=%s" % obj_id})
102106
return obj
103107

108+
104109
app.add_handlers('', [
105110
(r"/", RootHandler),
106111
(r"/create", CreateHandler),

0 commit comments

Comments
 (0)