Skip to content

could not assemble any primary key columns for mapped table #1606

@cjdxhjj

Description

@cjdxhjj

Privileged issue

  • I'm @tiangolo or he asked me directly to create an issue here.

Issue Content

 File "C:\Users\petzold\PycharmProjects\script_executor\model\exec_result.py", line 9, in <module>
    class ExecResult(SQLModel, table=True):
    ...<8 lines>...
        update_time: Annotated[datetime, Field(sa_column=Column('update_time', DateTime, default=func.now(), onupdate=func.now()), description='更新时间'), PlainSerializer(lambda x: x.strftime('%Y-%m-%d %H:%M:%S'), return_type=str)]
  File "C:\Users\petzold\PycharmProjects\script_executor\.venv\Lib\site-packages\sqlmodel\main.py", line 644, in __init__
    DeclarativeMeta.__init__(cls, classname, bases, dict_, **kw)
    ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\petzold\PycharmProjects\script_executor\.venv\Lib\site-packages\sqlalchemy\orm\decl_api.py", line 199, in __init__
    _as_declarative(reg, cls, dict_)
    ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "C:\Users\petzold\PycharmProjects\script_executor\.venv\Lib\site-packages\sqlalchemy\orm\decl_base.py", line 245, in _as_declarative
    return _MapperConfig.setup_mapping(registry, cls, dict_, None, {})
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\petzold\PycharmProjects\script_executor\.venv\Lib\site-packages\sqlalchemy\orm\decl_base.py", line 326, in setup_mapping
    return _ClassScanMapperConfig(
        registry, cls_, dict_, table, mapper_kw
    )
  File "C:\Users\petzold\PycharmProjects\script_executor\.venv\Lib\site-packages\sqlalchemy\orm\decl_base.py", line 581, in __init__
    self._early_mapping(mapper_kw)
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
  File "C:\Users\petzold\PycharmProjects\script_executor\.venv\Lib\site-packages\sqlalchemy\orm\decl_base.py", line 367, in _early_mapping
    self.map(mapper_kw)
    ~~~~~~~~^^^^^^^^^^^
  File "C:\Users\petzold\PycharmProjects\script_executor\.venv\Lib\site-packages\sqlalchemy\orm\decl_base.py", line 1995, in map
    mapper_cls(self.cls, self.local_table, **self.mapper_args),
    ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in __init__
  File "C:\Users\petzold\PycharmProjects\script_executor\.venv\Lib\site-packages\sqlalchemy\util\deprecations.py", line 281, in warned
    return fn(*args, **kwargs)  # type: ignore[no-any-return]
  File "C:\Users\petzold\PycharmProjects\script_executor\.venv\Lib\site-packages\sqlalchemy\orm\mapper.py", line 866, in __init__
    self._configure_pks()
    ~~~~~~~~~~~~~~~~~~~^^
  File "C:\Users\petzold\PycharmProjects\script_executor\.venv\Lib\site-packages\sqlalchemy\orm\mapper.py", line 1652, in _configure_pks
    raise sa_exc.ArgumentError(
    ...<3 lines>...
    )
sqlalchemy.exc.ArgumentError: Mapper Mapper[ExecResult(exec_result)] could not assemble any primary key columns for mapped table 'exec_result'

my model is

class ExecResult(SQLModel, table=True):
    """执行结果"""
    __tablename__ = 'exec_result'
    id: Annotated[int, Field(sa_column=Column('id', primary_key=True), description="id")]
    script_id: Annotated[int, Field(description="脚本id")]
    status: Annotated[int, Field(description="执行状态")]
    result: Annotated[str, Field(description="执行结果")]
    error: Annotated[str, Field(description="错误输出")]
    create_time: Annotated[datetime, Field(sa_column=Column('create_time', DateTime, default=func.now()), description='创建时间'), PlainSerializer(lambda x: x.strftime('%Y-%m-%d %H:%M:%S'), return_type=str)]
    update_time: Annotated[datetime, Field(sa_column=Column('update_time', DateTime, default=func.now(), onupdate=func.now()), description='更新时间'), PlainSerializer(lambda x: x.strftime('%Y-%m-%d %H:%M:%S'), return_type=str)]

this is also not work

class ExecResult(SQLModel, table=True):
    """执行结果"""
    __tablename__ = 'exec_result'
    id: Annotated[int, Field(primary_key=True, description="id")]
    script_id: Annotated[int, Field(description="脚本id")]
    status: Annotated[int, Field(description="执行状态")]
    result: Annotated[str, Field(description="执行结果")]
    error: Annotated[str, Field(description="错误输出")]
    create_time: Annotated[datetime, Field(sa_column=Column('create_time', DateTime, default=func.now()), description='创建时间'), PlainSerializer(lambda x: x.strftime('%Y-%m-%d %H:%M:%S'), return_type=str)]
    update_time: Annotated[datetime, Field(sa_column=Column('update_time', DateTime, default=func.now(), onupdate=func.now()), description='更新时间'), PlainSerializer(lambda x: x.strftime('%Y-%m-%d %H:%M:%S'), return_type=str)]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions