lukyjre 发表于 2016-12-13 08:18:16

Sanic 连接postgresql数据库

1.安装系统包
# yum install postgresql-devel
2.安装Python包
peewee-2.8.5.tar.gz
psycopg2-2.6.2.tar.gz
1).安装peewee-async
# pip install peewee-async
Collecting peewee-async
Downloading peewee_async-0.5.6-py3-none-any.whl
Requirement already satisfied: peewee>=2.8.0 in /usr/local/lib/python3.5/site-packages (from peewee-async)
Installing collected packages: peewee-async
Successfully installed peewee-async-0.5.6
#
2).安装aiopg
# pip install aiopg
Collecting aiopg
Using cached aiopg-0.13.0-py3-none-any.whl
Requirement already satisfied: psycopg2>=2.5.2 in /usr/local/lib/python3.5/site-packages/psycopg2-2.6.2-py3.5-linux-x86_64.egg (from aiopg)
Installing collected packages: aiopg
Successfully installed aiopg-0.13.0
#

3.目录结构
/home/webapp
   |-- main.py
   |-- my_blueprint.py
   templates
      |-- index.html


4.文件内容:

1).main.py

# more main.py
from sanic import Sanic
from my_blueprint import bp

app = Sanic(__name__)
app.blueprint(bp)

app.run(host='0.0.0.0', port=8000, debug=True)
#

2).my_blueprint.py

# more my_blueprint.py
from sanic import Blueprint
from sanic.response import json, text, html

## Jinja2 template ####
from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('my_blueprint', 'templates'))

## database ####
import uvloop, peewee
from peewee_async import PostgresqlDatabase

bp = Blueprint('my_blueprint')

# init db connection
global database
database = PostgresqlDatabase(database='webdb',
                              host='127.0.0.1',
                              user='postgres',
                              password='111111')

# router define
@bp.route('/')
async def bp_root(request):
    serialized_obj = []
    cursor = database.execute_sql('select * from t1;')
    for row in cursor.fetchall():
         serialized_obj.append({
            'id': row,
            'name': row}
      )
    template = env.get_template('index.html')
    content=template.render(items=serialized_obj)
    return html(content)

#

3).index.html

# more index.html

Sanic






{% for item in items %}




{% endfor %}

idname
{{ item.id }} {{ item.name }}



#

5.浏览器运行结果


页: [1]
查看完整版本: Sanic 连接postgresql数据库