出现错误无法创建表clinic_app_auth.vitals errno:150外键约束格式不正确

问题描述 投票:0回答:1

我已经使以下类继承自 BaseModel

from sqlalchemy.orm import DeclarativeBase
from sqlalchemy.orm import relationship, Mapped, mapped_column


class Base(DeclarativeBase):
    pass


class Patients(Base):
    __tablename__ = 'patients'

    patient_id: Mapped[int] = mapped_column(primary_key=True, index=True)
    registration_date: Mapped[str] =  mapped_column(Date, nullable=True)
    user_id: Mapped[int] = mapped_column(Integer, ForeignKey('users.id'), nullable=False)

    user = relationship('Users', back_populates='patient')  # One-to-one relationship
    vitals = relationship('Vitals', back_populates='patient')


class Vitals(Base):

    __tablename__ = 'vitals'

    id: Mapped[int] = mapped_column(primary_key=True, index=True)
    weight_in_kg: Mapped[float] = mapped_column(Float, nullable=True)
    height_in_cm: Mapped[float] = mapped_column(Float, nullable=True)
    systolic_bp: Mapped[float] = mapped_column(Float, nullable=False)
    diastolic_bp: Mapped[float] = mapped_column(Integer, nullable=False)
    pulse: Mapped[int] = mapped_column(Integer, nullable=False)
    temperature_in_celsius: Mapped[float] = mapped_column(Float, nullable=False)
    oxygen_levels: Mapped[int] = mapped_column(Integer, nullable=False)
    measurement_dt: Mapped[str] = mapped_column(DateTime, nullable=False, unique=True)
    notes: Mapped[str] = mapped_column(String(length=320), nullable=True)
    patient_id: Mapped[int] = mapped_column(Integer, ForeignKey('patients.patient_id'), unique=True, nullable=False)

    patient = relationship('Patients', back_populates='vitals')

我拥有所有表格,但无法添加生命体征表。

show tables;
+---------------------------+
| Tables_in_clinic_app_auth |
+---------------------------+
| patients                  |
| roles                     |
| user_profiles             |
| users                     |
+---------------------------+

我在这里做错了什么?

mysql sqlalchemy orm aio-mysql
1个回答
0
投票

回答我调试发现的问题,

我运行命令

SHOW CREATE TABLE patients;
并意识到
patinet_id
BigInteger
当默认情况下 sqlalchemy orm 试图创建带有整数的外键列时。 所以我将列类型设置为:

    patient_id: Mapped[int] = mapped_column(BigInteger, ForeignKey('patients.patient_id'), unique=True, nullable=False)

解决了问题

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.