如何在SQLAlchemy中为数据库的查找表创建枚举?

2 投票
1 回答
1415 浏览
提问于 2025-04-16 11:06

我在数据库里有一个查找表,大概长这样:

-----------------
| Code | Id     |
-----------------
| Good | 1      |
| Bad  | 2      |
-----------------

我想用Python创建一个对象,长得像这样:

>>> Codes.Good
1
>>> Codes.Bad
2

我之前是用一种比较“黑科技”的方法,把type函数、原始SQL查询和Session.execute拼凑在一起。比如说:

>>> results = Session.execute("select code, id from codes")
>>> d = {}
>>> [d[result.code] = result.id for result in results]
>>> Codes = type("Codes", (object,), d)

在SQLAlchemy里,有没有更好的内置方法来实现这个?

1 个回答

4

SqlAlchemy的创始人最近发了一篇文章,讲的是如何做到这一点:

http://techspot.zzzeek.org/2011/01/14/the-enum-recipe/

撰写回答