小编dan*_*wos的帖子

如何将 JSON 列与 SQLModel 结合使用

我正在尝试通过 SQLModel 定义 JSON 列:

from typing import Optional
from sqlmodel import Field, Session, SQLModel, create_engine, JSON


class Hero(SQLModel, table=True):
    id: Optional[int] = Field(default=None, primary_key=True)
    name: str
    secret_name: str
    age: Optional[int] = None
    meta: JSON
Run Code Online (Sandbox Code Playgroud)

代码来自SQLModel,但通过“meta”属性进行扩展。

将上面的代码与示例代码的其余部分(设置 sqlite、添加数据)一起使用,出现以下错误:

RuntimeError: no validator found for <class 'sqlalchemy.sql.sqltypes.JSON'>, see `arbitrary_types_allowed` in Config
Run Code Online (Sandbox Code Playgroud)

我尝试通过以下方式扩展代码

class Hero(SQLModel, table=True):
    [...]
    meta: JSON

    @validator('meta')
    def validate_json(v):
        return v

    class Config:
        arbitrary_types_allowed = True 
Run Code Online (Sandbox Code Playgroud)

但这会导致另一个错误:

sqlalchemy.exc.CompileError: (in table 'hero', column 'meta'): Can't generate DDL for …
Run Code Online (Sandbox Code Playgroud)

json sqlalchemy sqlmodel

22
推荐指数
1
解决办法
1万
查看次数

标签 统计

json ×1

sqlalchemy ×1

sqlmodel ×1