首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复合指数SQLModel

复合指数SQLModel
EN

Stack Overflow用户
提问于 2022-02-02 15:48:30
回答 1查看 368关注 0票数 2

我正在试验SQLModel (https://sqlmodel.tiangolo.com/),我不得不在几个字段之间创建一个复合索引,而我无法使用SQLModel库来实现它。

Db模型

我发现的唯一工作是直接使用sqlalchemy,而不是index=true (在为唯一字段创建索引时使用SQLModel文档-)

代码语言:javascript
复制
class Jump(SQLModel, table=True):
"""
SQL Table abstraction: Jump
Contains data belonging to a connection between a questionnaire-version and another
questionnaire-version
"""

origin_name: str = Field(primary_key=True)
origin_version: int = Field()
destination_name: str = Field()

__table_args__ = (
    Index(
        "compound_index_origin_name_version_destination_name", "origin_name", "origin_version", "destination_name"
    ),
)
EN

回答 1

Stack Overflow用户

发布于 2022-09-09 11:52:20

这不是“解决办法”。这正是我们应该做的事情(目前为止)。SQLModel背后的想法大概是提供一个工具箱,用于构建来自SQLAlchemy的人非常熟悉的表模型,同时也提供大部分来自Pydantic模型的好处。

在某些情况下,SQLModel显然会做不同的事情,在某些方面它试图简化现有的接口。例如,在foreign_key构造函数上提供Field参数,这样就不需要从SQLAlchemy导入和实例化ForeignKey

但在这种情况下,我真的不认为试图改变现有的工具的意义。SQLAlchemy声明式ORM模型允许您通过__table_args__类属性设置复合索引和其他表参数。SQLModel的元类继承了这个特性。那为什么要重新发明轮子呢?

除非你知道如何进一步简化。在这种情况下,我相信塞巴斯蒂安会对相应的按下问题跟踪器中的建议感到非常高兴。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70958639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档