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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions