python-3.x - 如何在 sqlalchemy 中组合同一类的数据库存储实例和应用程序硬编码实例?
问题描述
我有一个有几个类的应用程序,我们称它们School
为Subject
. 我有schools
包含学校列表的表格,我有subjects
包含主题列表的表格。每所学校只能专攻一门学科,schools.spec_subject
FK 对表中条目之一的引用也是如此subjects
,该条目由 SQLAchemy 通过School.spec_subject
属性处理。
我想允许用户添加他们自己的科目并将它们用作学校专业。
我想提供一个应用程序的硬编码主题列表,我希望能够使用应用程序的未来版本对其进行更新,并且我不想提供更改这些硬编码主题的功能。所以本质上,我希望应用程序代码提供硬编码的主题并避免将它们存储在数据库中。
我怎样才能实现它?到目前为止,想到的唯一方法是为此设置两列:schools.spec_subject_user
对subjects
表具有 FK,并且schools.spec_subject_builtin
仅存储内置主题的 ID。然后我只添加尝试访问的自定义 getter spec_subject_user
,如果它是 null - 使用取自的值获取内置主题spec_subject_builtin
。
有更明智的方法吗?
解决方案
您似乎在将可用值存储在数据库中并将它们存储在应用程序代码中发生冲突。
我个人会使用数据库:如果其中存储了其他值,那么存储有效值的基本列表是一个明智的地方,它将自我保持完整性。
但是,您也可以使用存储在应用程序代码中的枚举类型:
import enum
class MyEnum(enum.Enum):
maths = 'Mathematics'
english = 'English'
art = 'Fine Art'
然后将列定义为
Column('value', Enum(MyEnum))
然后将您的数据库列填充为:“数学”、“英语”、“艺术”
推荐阅读
- c# - 检查数组是否包含相同的元素(顺序不重要)c#
- android - 如何在没有查询的情况下在 URL 中传递数据
- reactjs - 在 React 中处理 Child 中的父函数调用
- stm32f4 - STM32F4 上的通用选项字节
- python-3.x - 将文本文件解析为类对象
- python - 使用 slimxmpp 发送消息在 process() 中挂起
- curl - 使用 curl 将接收到的 cookie 存储在文件中
- laravel - 我未设置的刀片中设置的变量
- php - 如何更改 Divi 博客元素的顺序?
- javascript - 从下载 url 下载的 Firestorage 不会下载我的文件