En el manual de SQLAlchemy la solución no es muy clara para la forma declarative, me arrojaba el siguiente error
sqlalchemy.exc.ArgumentError: Column-based expression object expected for argument 'primaryjoin'; got: 'False'
Al ver Column-based expression supuse que era el mismo tipo que en los filtros y así fué. La solución es simple como siempre, la pongo aquí para referencia.
class Registro(DeclarativeBase):
__tablename__ = 'registro'
#{ Columns
id = Column(Integer, primary_key=True)
# folio único
folio = Column(Integer, nullable=True)
medic_id = Column(u'medic_id', Integer, ForeignKey('medic.id'))
nursea_id = Column(u'nursea_id', Integer, ForeignKey('nurse.id'), nullable=True)
nurseb_id = Column(u'nurseb_id', Integer, ForeignKey('nurse.id'), nullable=True)
room_id = Column(u'room_id', Integer, ForeignKey('room.id'))
status_id = Column(u'status_id', Integer, ForeignKey('status.id'))
fecha = Column(u'fecha', Date(timezone=False), primary_key=False, nullable=True)
patient = Column(u'patient', Unicode(255), nullable=False)
patient_age = Column(u'patient_age', Integer, nullable=True)
mat = Column(u'mat', Unicode(255), nullable=False)
kit_id = Column(u'kit_id', Integer, ForeignKey('kit.id'))
hour_in = Column(u'hour_in', Unicode(16), nullable=False)
hour_out = Column(u'hour_out', Unicode(16), nullable=False)
diagnosis = Column(u'diagnosis', Text(length=None, convert_unicode=True, \
assert_unicode=None), primary_key=False)
procedure = Column(u'procedure', Unicode(255), nullable=False)
notes = Column(u'notes', Text(length=None, convert_unicode=True, \
assert_unicode=None), primary_key=False)
la relación dentro la misma clase queraría así
#{ Relations
medic = relation(Medic)
kit = relation(Kit)
status = relation(Status)
room = relation(Room)
nursea = relation(Nurse, primaryjoin=nursea_id == Nurse.id)
nurseb = relation(Nurse, primaryjoin=nurseb_id == Nurse.id)
#}
No hay comentarios.:
Publicar un comentario