首页 > 解决方案 > 当表有外键时如何在 SQLAlchemy 中添加值

问题描述

我在尝试将值添加到具有一些外键的表时遇到了一些问题。我有以下表格

class Actividad(Base):
    __tablename__ = 'actividad'

    id = Column(Integer, primary_key=True, autoincrement="auto")
    nombre = Column(String, unique=True, nullable= False)
    gastos = relationship("Gasto", cascade='all, delete, delete-orphan')
    viajeros = relationship('Viajero', secondary = 'actividad_viajero')

    def __init__(self, nombre):
        self.nombre = nombre


class Viajero(Base):
    __tablename__ = 'viajero'

    id = Column(Integer,primary_key=True)
    nombre = Column(String)
    actividades = relationship('Actividad', secondary = 'actividad_viajero')
    gastos = relationship('Gasto', cascade='all, delete, delete-orphan')

    def __init__(self, nombre):
        self.nombre = nombre

class Gasto(Base):
    __tablename__ = 'gasto'

    id = Column(Integer, primary_key=True)
    concepto = Column(String)
    valor = Column(Integer)
    fecha = Column(Date)
    actividad = Column(Integer, ForeignKey('actividad.id'))
    viajero = Column(Integer, ForeignKey('viajero.id'))

    def __init__(self, concepto, valor, fecha):
        self.concepto = concepto
        self.valor = valor
        self.fecha = fecha

class ActividadViajero(Base):
    __tablename__ = 'actividad_viajero'

    actividad = Column(Integer, ForeignKey('actividad.id'), primary_key=True)
    viajero = Column(Integer, ForeignKey('viajero.id'), primary_key=True)

当我Gasto使用代码向表中添加一些值时

    session.add(Gasto(concepto="consumo",valor=1000,fecha=datetime.strptime('15-12-2020', '%d-%m-%Y'),actividad=1, viajero=1))
    session.commit()

我明白了

    session.add(Gasto(concepto="consumo",valor=1000,fecha=datetime.strptime('15-12-2020', '%d-%m-%Y'),actividad=1, viajero=1))
TypeError: __init__() got an unexpected keyword argument 'actividad'

但是,如果我使用

    session.add(Gasto(concepto="consumo",valor=1000,fecha=datetime.strptime('15-12-2020', '%d-%m-%Y')))
    session.commit()

我没有收到错误。我想知道,如何向参数添加值actividadesviajero house使用 SQLAlchemy systaxis?

标签: pythonsqlalchemy

解决方案


推荐阅读