小编Mar*_*her的帖子

使用枚举名称而不是值对 Pydantic 字段进行编码

我有一个枚举类:

class Group(enum.Enum):
    user = 0
    manager = 1
    admin = 2
Run Code Online (Sandbox Code Playgroud)

我有一个 pydantic 模型:

class User(BaseModel):
    id: int
    username: str
    group: Group
Run Code Online (Sandbox Code Playgroud)

它生成序列化为 json 的内容如下:

{
    "id": 5,
    "username": "admin",
    "group": 2
}
Run Code Online (Sandbox Code Playgroud)

但是,我想获取枚举字段的名称而不是其值,所以它应该是:

{
    "id": 5,
    "username": "admin",
    "group": "admin"
}
Run Code Online (Sandbox Code Playgroud)

这有可能吗?如果是这样,怎么办?

python enums model pydantic

10
推荐指数
2
解决办法
5518
查看次数

Pydantic 对我的类型及其联合感到困惑

我有以下 Pydantic 模型类型方案规范:

class RequestPayloadPositionsParams(BaseModel):
    """
    Request payload positions parameters
    """

    account: str = Field(default="COMBINED ACCOUNT")
    fields: List[str] = Field(default=["QUANTITY", "OPEN_PRICE", "OPEN_COST"])


class RequestPayloadPositions(BaseModel):
    """
    Request payload positions service
    """

    header: RequestPayloadHeader = Field(
        default=RequestPayloadHeader(service="positions", id="positions", ver=0)
    )
    params: RequestPayloadPositionsParams = Field(
        default=RequestPayloadPositionsParams()
    )


class RequestPayloadOrdersParams(BaseModel):
    """
    Request payload orders parameters
    """

    account: str = Field(default="COMBINED ACCOUNT")
    types: List[str] = Field(default=["WORKING", "FILLED", "CANCELED"])


class RequestPayloadOrders(BaseModel):
    """
    Request payload orders service
    """

    header: RequestPayloadHeader = Field(
        default=RequestPayloadHeader(service="order_events", id="order_events", ver=0)
    )
    params: …
Run Code Online (Sandbox Code Playgroud)

python types pydantic

8
推荐指数
1
解决办法
1万
查看次数

我没有让 Keycloak 在 Traefik 后面的 docker 中工作

我有一个域 example.org。

我有 docker 在那里运行,Traefik 作为代理。现在我想设置Keycloak。我想访问 auth.example.org 上的 Keycloak。这是我的配置(docker-compose):

    keycloak:
        image: quay.io/keycloak/keycloak
        restart: always
        command: start
        environment:
            KC_PROXY_ADDRESS_FORWARDING: true
            KC_HOSTNAME_STRICT: false
            KC_HOSTNAME: auth.example.org
            KC_HOSTNAME_PORT: 443
            KC_HTTP_ENABLED: true
            KC_DB: postgres
            KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak?ssl=allow
            KC_DB_USERNAME: root
            KC_DB_PASSWORD: password
            KEYCLOAK_ADMIN: admin
            KEYCLOAK_ADMIN_PASSWORD: password
        labels:
            - "traefik.http.routers.cloud-network-keycloak.rule=Host(`auth.example.org`)"
            - "traefik.http.routers.cloud-network-keycloak.entrypoints=websecure"
            - "traefik.http.routers.cloud-network-keycloak.tls.certresolver=letsencryptresolver"
            - "traefik.http.routers.cloud-network-keycloak.tls=true"
            - "traefik.http.services.cloud-network-keycloak.loadbalancer.server.port=8080"
        depends_on:
            postgres:
                condition: service_healthy
        networks:
            - internal
            - traefik
Run Code Online (Sandbox Code Playgroud)

但是,加载 Keycloak 管理控制台会https://auth.example.org/admin/master/console/在浏览器中引发错误:

网址: https: //auth.example.org/realms/master/protocol/openid-connect/login-status-iframe.html/init?client_id=security-admin-console&origin=https%3A%2F%2Fauth.example。组织 状态:403

我不知道...如何解决这个问题?

proxy docker keycloak docker-compose traefik

5
推荐指数
1
解决办法
5793
查看次数

SQLAlchemy 过滤 None/NULL 值 - 有效 - 但如何将其放入列表中?

我想过滤列中NoneMySQL 方言值或其中的数据。NULL

这可以通过以下方式轻松完成:

db.query(models.Data).filter(models.Data.multiplier == None).all()

好吧,但我正在构建一种高级过滤和排序功能。因此,我有一个包含要过滤的值的列表,例如:

[1,2,5]

为此过滤我的数据也很容易:

db.query(models.Data).filter(models.Data.multiplier.in_([1,2,5])).all()

但现在我还想None在我的列表中允许一个值:

[1,2,5,None]

过滤:

db.query(models.Data).filter(models.Data.multiplier.in_([1,2,5,None])).all()

但是,不会返回列NULL中具有该值的所有行。为什么不使用该函数的用法?怎么解决这个问题呢?multiplierNonein_

python mysql database sqlalchemy

3
推荐指数
2
解决办法
1万
查看次数