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[0],
? ? ? ? ? ? 'name': row[1]}
? ? ? ? )
? ? template = env.get_template('index.html')
? ? content=template.render(items=serialized_obj)
? ? return html(content)
#
3).index.html
# more index.html?
<!doctype html>
<title> Sanic </title>
<div class=page>
? <table border="1" cellpadding="10">
? <tr>
? ? <th>id</th>
? ? <th>name</th>
? </tr>
? {% for item in items %}
? ? <tr>
? ? <td> ` item`.`id ` </td>
? ? <td> ` item`.`name ` </td>?
? ? </tr>
? {% endfor %}
? </table>
</div>
#?
5.瀏覽器運行結果
本文轉自 pgmia 51CTO博客,原文鏈接:http://blog.51cto.com/heyiyi/1882032
總結
以上是生活随笔為你收集整理的Sanic 连接postgresql数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: vue 1.0源代码重点难点分析
- 下一篇: Nerv --- React IE8
