我正在试验SQLModel (https://sqlmodel.tiangolo.com/),我不得不在几个字段之间创建一个复合索引,而我无法使用SQLModel库来实现它。
我发现的唯一工作是直接使用sqlalchemy,而不是index=true (在为唯一字段创建索引时使用SQLModel文档-)
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"
),
)发布于 2022-09-09 11:52:20
这不是“解决办法”。这正是我们应该做的事情(目前为止)。SQLModel背后的想法大概是提供一个工具箱,用于构建来自SQLAlchemy的人非常熟悉的表模型,同时也提供大部分来自Pydantic模型的好处。
在某些情况下,SQLModel显然会做不同的事情,在某些方面它试图简化现有的接口。例如,在foreign_key构造函数上提供Field参数,这样就不需要从SQLAlchemy导入和实例化ForeignKey。
但在这种情况下,我真的不认为试图改变现有的工具的意义。SQLAlchemy声明式ORM模型允许您通过__table_args__类属性设置复合索引和其他表参数。SQLModel的元类继承了这个特性。那为什么要重新发明轮子呢?
https://stackoverflow.com/questions/70958639
复制相似问题