gpt4 book ai didi

python - 在 sqlalchemy 中查询 Enum 列导致 LookupError

转载 作者:行者123 更新时间:2023-11-29 12:51:21 31 4
gpt4 key购买 nike

我以为我非常密切地关注文档,使用 sqlalchemy 在 Postgres 数据库中设置一个 ENUM 字段,但我显然做错了什么(希望是简单的事情)。

我的表有一个类型contact_type:

                                        List of data types
Schema | Name | Internal name | Size | Elements | Owner | Access privileges | Description
--------+---------------+---------------+------+---------------+----------+-------------------+-------------
public | contact_types | contact_types | 4 | unknown +| postgres | |
| | | | incoming_text+| | |
| | | | incoming_call+| | |
| | | | outgoing_call | | |

在表格中:

  Table "public.calls"
Column | Type | Modifiers
--------------+--------------------------+----------------------------------------------------
contact_type | contact_types |

在 python 中,我根据 the docs 创建了 enum 的子类:

import enum

class contact_types(enum.Enum):
unknown: 1
incoming_text: 2
incoming_call: 3
outgoing_call: 4

并将其传递给模型:

class Call(db.Model):
contact_type = db.Column(db.Enum(contact_types))

一切看起来都很好。插入工作,在查看表时我可以看到值,但是查询时 SQLAlchemy 的验证似乎不满意。这会导致错误:

calls = Call.query.order_by(Call.time.desc()).limit(pagesize).offset(offset)
for c in calls:
print(c)

LookupError: "unknown" is not among the defined enum values

“未知”在枚举中。我是否在某处遗漏了将查询连接到枚举类的步骤?

最佳答案

enum定义中应该有=,而不是:

class contact_types(enum.Enum):
unknown = 1
incoming_text = 2
incoming_call = 3
outgoing_call = 4

关于python - 在 sqlalchemy 中查询 Enum 列导致 LookupError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53161267/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com