In my code I have three requests to mysql-database. It looks like this:
@app.route('/private', methods=['POST']) def private(): login = request.form['login'] if login is None or not login: return jsonify(data='Incorrect URL') try: c, conn = cursor_connection() c = conn.cursor() c.execute("SELECT accounts_info_uid " "FROM auth_info WHERE login='{}' ".format(login)) id = c.fetchall() if not id: return jsonify(data='Incorrect login') c.execute("SELECT * FROM boxes_id AS tb1 LEFT JOIN" " accounts_info AS tb2 ON tb2.boxes_ids=tb1.uid " # "LEFT JOIN electricity_info as tb3 ON tb3.boxes_id_uid=tb1.uid" " WHERE tb2.uid={} ".format(id[0][0])) uid, mc_address, working_status, activation_status, _,\ first_name, second_name, registration_date, phone, email, boxes_id = c.fetchall()[0] c.execute(" SELECT consumed_electricity " "FROM electricity_info " "WHERE boxes_id_uid={} ".format(boxes_id)) consumed_electricity = [float(val[0]) for val in c.fetchall()] c.close() conn.close() except Exception as e: logger.error(msg='Cannot execute /private {}'.format(e)) return str(e)
I fetched a list from electricity info by primary key in boxes_id (so in electricity_info it is called boxes_id_uid).
Strcuture of pk in my tables:
auth_info --------> pk is accounts_info_uid boxes_id ----------> pk is uid accounts_info ------> pk is uid and it is connected to boxes_id by field boxes_id electricity_info ------> pk is boxes_id_uid
I think it can be optimized in one SQL-request.
Am I right and if so can you tell me how to achieve that?
Thank you!