【发布时间】:2022-08-07 01:05:44
【问题描述】:
我的 pydantic 模式出现此错误,但奇怪的是它正确生成了对象,并将其发送到 SQLAlchemy 模型,然后它突然为模型中的所有元素抛出错误。
response -> id
field required (type=value_error.missing)
response -> date
field required (type=value_error.missing)
response -> time
field required (type=value_error.missing)
response -> price
field required (type=value_error.missing)
response -> distance
field required (type=value_error.missing)
response -> origin_id
field required (type=value_error.missing)
response -> destination_id
field required (type=value_error.missing)
response -> driver_id
field required (type=value_error.missing)
response -> passenger_id
field required (type=value_error.missing)
response -> vehicle_id
field required (type=value_error.missing)
response -> status
field required (type=value_error.missing)
我必须说所有字段都应该有值。而且错误跟踪不引用我的代码的任何部分,所以我什至不知道在哪里调试。我是 SQLAlchemy/pydantic 的菜鸟
这是代码的一些部分
class Trip(BaseModel):
id: int
date: str
time: str
price: float
distance: float
origin_id: int
destination_id: int
driver_id: int
passenger_id: int
vehicle_id: int
status: Status
class Config:
orm_mode = True
class TripDB(Base):
__tablename__ = \'trip\'
__table_args__ = {\'extend_existing\': True}
id = Column(Integer, primary_key=True, index=True)
date = Column(DateTime, nullable=False)
time = Column(String(64), nullable=False)
price = Column(Float, nullable=False)
distance = Column(Float, nullable=False)
status = Column(String(64), nullable=False)
origin_id = Column(
Integer, ForeignKey(\'places.id\'), nullable=False)
destination_id = Column(
Integer, ForeignKey(\'places.id\'), nullable=False)
origin = relationship(\"PlaceDB\", foreign_keys=[origin_id])
destination = relationship(\"PlaceDB\", foreign_keys=[destination_id])
driver_id = Column(
Integer, ForeignKey(\'driver.id\'), nullable=False)
vehicle_id = Column(
Integer, ForeignKey(\'vehicle.id\'), nullable=False)
passenger_id = Column(
Integer, ForeignKey(\'passenger.id\'), nullable=False)
def create_trip(trip: Trip, db: Session):
origin = db.query(models.PlaceDB).filter(models.PlaceDB.id == trip.origin_id).first()
destination = db.query(models.PlaceDB).filter(models.PlaceDB.id == trip.destination_id).first()
db_trip = TripDB(
id=(trip.id or None),
date=trip.date or None, time=trip.time or None, price=trip.price or None,
distance=trip.distance or None,
origin_id=trip.origin_id or None, destination_id=(trip.destination_id or None), status=trip.status or None,
driver_id=trip.driver_id or None, passenger_id=trip.passenger_id or None, vehicle_id=trip.vehicle_id or None, origin=origin, destination=destination)
try:
db.add(db_trip)
db.commit()
db.refresh(db_trip)
return db_trip
except:
return \"Somethig went wrong\"
-
你检查过你的数据库的回报吗?你确定你没有传入
create_trip函数的最后一个except吗? -
返回是好的,我已经设法“修复”它,从创建行程函数中删除了 pydantic 模型,我知道它可能是错误的,但它可以工作,通过一些手动类型检查它应该运行没有任何问题...有趣的是显然它从未进入 create_trip 函数...
标签: python sqlalchemy pydantic