Как создать кастомную связь 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, но я не думаю, что это то, что мне нужно, по крайней мере, я не понял, как с этим работать.