I am trying to pass a query that I have made - and I already tried it in SQL - to SQLAlchemy in python using Flask.
This is the query in SQL:
select Reclamo.IdReclamo from
Reclamo,ServicioAsignacion,ReclamoServicioAsignacionAfectado where
ServicioAsignacion.IdServicioAsignacion=ReclamoServicioAsignacionAfectado.idServicioAsignacion
and Reclamo.IdReclamo=ReclamoServicioAsignacionAfectado.idReclamo
and Reclamo.masivo=1 and Reclamo.estado<>'Solucionado'
and ServicioAsignacion.IdServicioAsignacion=232750
These are my tables in the model.py
:
class reclamo(db.Model):
__tablename__ = 'Reclamo'
idreclamo = db.Column('IdReclamo', db.Integer, primary_key=True)
estado = db.Column('estado', db.String(255))
idcliente = db.Column('idCliente', db.Integer,
db.ForeignKey('Cliente.IdCliente'))
cliente = db.relationship('cliente', backref='reclamo')
idservicioasignacion = db.Column('idServicioAsignacion', db.Integer)
reclamoservicioasignacionafectado = db.relationship('reclamoservicioasignacionafectado', backref ='reclamo', lazy='dynamic')
masivo = db.Column('masivo', db.Integer)
class servicioasignacion(db.Model):
__tablename__ = 'ServicioAsignacion'
idservicioasignacion = db.Column('IdServicioAsignacion', db.Integer, primary_key = True)
idcliente = db.Column('idCliente', db.Integer, db.ForeignKey('Cliente.IdCliente'))
cliente = db.relationship('cliente', backref = 'servicioasignacion')
class reclamoservicioasignacionafectado(db.Model):
__tablename__ = 'ReclamoServicioAsignacionAfectado'
idreclamoservicioasignacionafectado = db.Column('idReclamoServicioAsignacionAfectado', db.Integer, primary_key=True)
idreclamo = db.Column('idReclamo', db.Integer, db.ForeignKey('Reclamo.IdReclamo'))
idservicioasignacion = db.Column('idServicioAsignacion', db.Integer, db.ForeignKey('ServicioAsignacion.IdServicioAsignacion'))
servicioasignacion = db.relationship('servicioasignacion', backref= 'reclamoservicioasignacionafectado')
idcliente = db.Column('idCliente', db.Integer,db.ForeignKey('Cliente.IdCliente'))
cliente = db.relationship('cliente', backref = 'reclamoservicioasignacionafectado')
And this is the query I'm trying, but it throws me an error ( TypeError: 'BaseQuery' object is not callable
):
@app.route('/verificarincidencia/<idservice>', methods=['GET'])
@requires_auth
def verificarincidencia_get(idservice):
if request.method == 'GET':
checkincidencia = reclamo.query(reclamo,servicioasignacion,reclamoservicioasignacionafectado).join(servicioasignacion).join(reclamoservicioasignacionafectado).filter(servicioasignacion.idservicioasignacion==reclamoservicioasignacionafectado.idservicioasignacion).filter(reclamo.idreclamo==reclamoservicioasignacionafectado.idreclamo).filter(reclamo.masivo==1).filter(reclamo.estado!='Solucionado').filter(servicioasignacion.idservicioasignacion==idservice).all()
return jsonify( {'reclamo': [elemento.as_dict() for elemento in checkincidencia] })
Since thank you very much (if I get to have the solution I publish it). I'm sure I'm not really understanding the issue of putting together a join in SQLAlchemy but maybe someone can help me.