python - ArgumentError: la relación espera un argumento de clase o asignador
sqlalchemy pyramid (1)
No estoy contento conmigo mismo, ya que es un error tan tonto, pero aquí está mi culpable:
report_type = relationship(''tReportType'',
uselist=False,
backref=backref(''report''))
debiera ser:
report_type = relationship(''TReportType'',
uselist=False,
backref=backref(''report''))
T mayúscula en lugar de t, debería estar haciendo referencia a la clase, no a mi nombre de tabla real: ''tReportType''
-> ''TReportType''
Recibo este extraño error y lo digo extraño porque hice un cambio a una tabla no relacionada.
Estoy tratando de consultar mi tabla tDevice
que se ve así:
class TDevice(Base):
__tablename__ = ''tDevice''
ixDevice = Column(Integer, primary_key=True)
ixDeviceType = Column(Integer, ForeignKey(''tDeviceType.ixDeviceType''), nullable=False)
ixSubStation = Column(Integer, ForeignKey(''tSubStation.ixSubStation''), nullable=False)
ixModel = Column(Integer, ForeignKey(''tModel.ixModel''), nullable=True)
ixParentDevice = Column(Integer, ForeignKey(''tDevice.ixDevice''), nullable=True)
sDeviceName = Column(Unicode(255), nullable=False)#added
children = relationship(''TDevice'',
backref=backref(''parent'', remote_side=[ixDevice]))
device_type = relationship(''TDeviceType'',
backref=backref(''devices''))
model = relationship(''TModel'',
backref=backref(''devices''))
sub_station = relationship(''TSubStation'',
backref=backref(''devices''))
Y así es como lo pregunto:
Device = DBSession.query(TDevice).filter(TDevice.ixDevice == device_id).one()
Tan pronto como se ejecuta esta línea, me aparece el error:
ArgumentError: relationship ''report_type'' expects a class or a mapper argument (received: <class ''sqlalchemy.sql.schema.Table''>)
Los únicos cambios que he realizado es agregar una relación tipo_de_informe en mi tReportTable
que ahora se ve así:
class TReport(Base):
__tablename__ = ''tReport''
ixReport = Column(Integer, primary_key=True)
ixDevice = Column(Integer, ForeignKey(''tDevice.ixDevice''), nullable=False)
ixJob = Column(Integer, ForeignKey(''tJob.ixJob''), nullable=False)
ixReportType = Column(Integer, ForeignKey(''tReportType.ixReportType''), nullable=False) # added
report_type = relationship(''tReportType'',
uselist=False,
backref=backref(''report''))
device = relationship(''TDevice'',
uselist=False,
backref=backref(''report''))
job = relationship(''TJob'',
uselist=False,
backref=backref(''report''))
Todavía soy nuevo en SqlAlchemy, así que parece que no veo cómo agregar esa relación debería estar causando este error si estoy iterando otra tabla.