小编jbe*_*bet的帖子

新的枚举值必须先提交才能使用

我正在将 PostgreSQL 从 9.6 升级到 13。以下脚本适用于 9.6:

BEGIN

CREATE TYPE x AS ENUM ('foo', 'bar');
ALTER TYPE x ADD VALUE 'baz';
SELECT 'baz'::x;

END;
Run Code Online (Sandbox Code Playgroud)

但 13 的结果是:

ERROR:  unsafe use of new value "baz" of enum type x
LINE 1: SELECT 'baz'::x;
               ^
HINT:  New enum values must be committed before they can be used.
Run Code Online (Sandbox Code Playgroud)

谷歌搜索表明它早于 13,但我不知道到底是哪个版本。

我很确定我有充分的理由创建枚举、添加值并在同一事务中使用该值。详情见问题末尾。

是否有任何已知的清洁解决方法?

[编辑] - 为什么我想这样做

我有一组 SQL 文件

v_0.01.sql
v_0.02.sql
v_0.03.sql
...
Run Code Online (Sandbox Code Playgroud)

是增量的,即“数据库版本 X”包含在“X 之前的所有 SQL 文件”中,例如版本 0.02 与

cat v_0.01.sql v_0.02.sql | …
Run Code Online (Sandbox Code Playgroud)

postgresql enums

8
推荐指数
2
解决办法
5953
查看次数

flask-restful-当前请求的资源类

问题

我所有的应用程序路由都是通过Flask-restful资源定义的。如何找到正在处理当前请求的资源对象/类?

我为什么要这个

我想记录处理请求时引发的所有异常。flask.got_request_exceptionhttp://flask.pocoo.org/docs/1.0/api/#signals中所述,我连接到,并且类似这样的方法运行良好:

from flask import got_request_exception, request

def log_exception(sender, exception, **extra):
    logger.info("URL: {}, Exception: {}".format(request.url, type(exception).__name__))

got_request_exception.connect(log_exception, app)
Run Code Online (Sandbox Code Playgroud)

唯一的问题是我想记录一些请求数据,但不是全部数据-例如,我想隐藏密码。我认为将日志记录数据逻辑与请求处理逻辑一起使用是一个好主意,如下所示:

from flask import request
import flask_restful

class SomeResource(flask_restful.Resource):
    def get(self):
        # ... GET processing
    def log_data(self):
        # log all body params
        return request.get_json()

class Login(flask_restful.Resource):
   def post(self):
       # ... authentication
   def log_data(self):
       # log selected body params
       return {'login': request.get_json()['login'], 'password': 'HIDDEN!'}
Run Code Online (Sandbox Code Playgroud)

而不是在我的中使用它log_exception

from flask import got_request_exception, request

def log_exception(sender, exception, **extra):
    resource_class …
Run Code Online (Sandbox Code Playgroud)

python flask flask-restful

7
推荐指数
1
解决办法
317
查看次数

标签 统计

enums ×1

flask ×1

flask-restful ×1

postgresql ×1

python ×1