Проблемы с типизацией Sqlalchemy mapped_column с помощью pylancePython

Программы на Python
Ответить
Anonymous
 Проблемы с типизацией Sqlalchemy mapped_column с помощью pylance

Сообщение Anonymous »

В настоящее время я определяю ORM и DTO в своем приложении fastapi и использую для этой работы SQLAlchemy 2.0.
Многие источники, включая официальную документацию, указывают, что способ использования отображаемых типов с ORM заключается в использовании Mapped_columns, а затем указывают типы вместе с Mapped, как показано ниже:

Код: Выделить всё

class Base(MappedAsDataclass, DeclarativeBase):
pass

class Board(Base):
__tablename__ = "board"
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
name: Mapped[str] = mapped_column(String)
Однако при этом pylance выделяет тип отображаемых столбцов как MappedColumn[Any] вместо подразумеваемых типов. Мои вопросы:
  • Почему это происходит? И это намеренное поведение? Насколько я понимаю, типы должны сопоставляться с типами mysql с типами Python, но здесь это не так.
  • Как работают значения по умолчанию для первичного ключа? В частности, для приведенного выше кода, когда я пытаюсь инициализировать экземпляр платы с помощью b = Board(name='test'), pylance показывает ошибку. Аргумент отсутствует для параметра "id". Это кажется странным, поскольку автоинкремент должен распознаваться как имеющий значение по умолчанию. Нужно ли явно добавлять параметр default= в определение ORM, чтобы избежать этой ошибки?


Подробнее здесь: https://stackoverflow.com/questions/798 ... th-pylance
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»