Peewee-与 Web 框架集成



Peewee 可以与大部分 Python Web 框架 API 顺畅协作。每当 Web 服务器网关接口 (WSGI) 收到来自客户端的连接请求时,就会建立与数据库的连接,然后在传送响应后关闭连接。

在基于 **Flask** 的 Web 应用程序中使用时,连接会对 **@app.before_request** 装饰器产生影响,并在 **@app.teardown_request** 断开。

from flask import Flask
from peewee import *

db = SqliteDatabase('mydatabase.db')
app = Flask(__name__)

@app.before_request
def _db_connect():
   db.connect()

@app.teardown_request
def _db_close(exc):
   if not db.is_closed():
      db.close()

Peewee API 也可以用于 **Django** 中。要实现此操作,请在 Django 应用程序中添加一个中间件。

def PeeweeConnectionMiddleware(get_response):
   def middleware(request):
      db.connect()
      try:
         response = get_response(request)
      finally:
         if not db.is_closed():
            db.close()
      return response
   return middleware

中间件会添加到 Django 的设置模块中。

# settings.py
MIDDLEWARE_CLASSES = (
   # Our custom middleware appears first in the list.
   'my_blog.middleware.PeeweeConnectionMiddleware',
   #followed by default middleware list.
   ..
)

Peewee 可以很方便地用在其他框架中,例如 Bottle、Pyramid 和 Tornado 等。

广告