Как создать кастомную связь ForeignKey по UUID

Мне нужно связать таблицы с помощью UUID, так как связывание по ID ненадежно. Я знаю, что PostgreSQL позволяет использовать UUID вместо ID, но я использую MySQL/SQLite3, поэтому мои таблицы имеют два поля: id и uid - и я никак не использую поле id.

# Что у меня есть:
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    characters: Mapped[list["Character"]] = relationship()

class Character(Base):
    __tablename__ = 'characters'
    id: Mapped[int] = mapped_column(primary_key=True)
    user_id: Mapped[int] = mapped_column(ForeignKey('users.id'))
    user: Mapped["User"] = relationship()


# Что мне нужно:
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    uid: Mapped[uuid.UUID] = mapped_column(Uuid, unique=True, default=uuid.uuid4)
    characters: Mapped[list["Character"]] = relationship()

class Character(Base):
    __tablename__ = 'characters'
    id: Mapped[int] = mapped_column(primary_key=True)
    uid: Mapped[uuid.UUID] = mapped_column(Uuid, unique=True, default=uuid.uuid4)
    user_uid: Mapped[uuid.UUID] = mapped_column(ForeignKey('users.uid')) # Don't work
    user: Mapped["User"] = relationship()

Буду признателен за любую помощь. Я использую SQLAlchemy 2.0, ORM.

Я пытался найти информацию в интернете и в официальной документации, но не смог найти ответа. В официальной документации есть информация о Custom Foreign Conditions, но я не думаю, что это то, что мне нужно, по крайней мере, я не понял, как с этим работать.


Ответы (0 шт):