我是靠谱客的博主 敏感康乃馨,最近开发中收集的这篇文章主要介绍python+flask+postgresql 学习,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、安装PostgreSQL

去官网下载安装:http://www.postgresql.org/download/


2、安装psycopg2

是一个PostgreSQL数据库连接库

去http://www.stickpeople.com/projects/python/win-psycopg/ 下载安装


一开始是pip install postgresql安装的,但是安装不成功。


3、创建postgresql触发器

create or replace function notify_on_insert() returns trigger as $$
begin
   PERFORM pg_notify('channel_'||new.channel,cast(row_to_json(new) as text));
   return null;
end;
$$ language plpgsql;

create trigger notify_on_message_insert after insert ON message
for each row execute procedure notify_on_insert();


4、创建表结构:

CREATE TABLE "public"."message" (
"id" int4 DEFAULT nextval('message_id_seq'::regclass) NOT NULL,
"channel" int4 NOT NULL,
"source" text COLLATE "default" NOT NULL,
"context" text COLLATE "default" NOT NULL,
CONSTRAINT "message_pkey" PRIMARY KEY ("id")
)
WITH (OIDS=FALSE)
;


5、创建应用

import flask
import psycopg2
import psycopg2.extensions
import select

app = flask.Flask(__name__)

def stream_messages(channel):
    conn = psycopg2.connect(database='MyTest',user='postgres',password='123456',host='localhost')
    conn.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)

    curs = conn.cursor()
    curs.execute('LISTEN channel_%d;'%int(channel))

    while True:
        select.select([conn],[],[])
        conn.poll()
        while conn.notifies:
            notify = conn.notifies.pop()
            yield "data:"+notify.payload+"nn"

@app.route("/message/<channel>",methods=['GET'])
def get_messages(channel):
    return flask.Response(stream_messages(channel),mimetype='text/event-stream')

if __name__ == "__main__":
    app.run()


最后

以上就是敏感康乃馨为你收集整理的python+flask+postgresql 学习的全部内容,希望文章能够帮你解决python+flask+postgresql 学习所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部