Spaces:
Runtime error
Runtime error
| #!/usr/bin/env python3 | |
| # -*- coding: utf-8 -*- | |
| """ | |
| Created on Thu Sep 22 14:38:28 2022 | |
| @author: syed | |
| """ | |
| import mysql.connector as sql_db | |
| import json | |
| #import mysql.connector | |
| # Initialize connection. | |
| # Uses st.experimental_singleton to only run once. | |
| #@st.experimental_singleton | |
| def init_connection(): | |
| #return sql_db.connect(**st.secrets["mysql"]) | |
| # return sql_db.connect(user='root', password='root1234', | |
| # host='127.0.0.1',port=3306, | |
| # database='rsi_polygon_schema') | |
| return sql_db.connect(user='freedb_root_mehtab', password='b%9bYQ%5TsK%mAD', | |
| host='sql.freedb.tech',port=3306, | |
| database='freedb_rsi_polygon_schema') | |
| query_insert_rating = "insert into rating(shape_id,expert_id, ratings) values(%s,%s,%s)" | |
| #query_update_rating = "update rating set ratings = %s where shape_id = %s and expert_id = %s" | |
| query_insert_shape = "insert into shape(ase,level_1, level_2, level_3, geojson) values(%s,%s,%s,%s,%s)" | |
| query_insert_expert = "insert into expert(name,expertise, tools_expert) values(%s,%s,%s)" | |
| def update_rating_query(shape_id, expert_id, ratings): | |
| query_rating = "update rating set ratings = '"+str(ratings)+"' where" | |
| query_rating += " shape_id = '"+str(shape_id)+"' and expert_id = '"+str(expert_id)+"'" | |
| return query_rating | |
| def get_rating_query(shape_id, expert_id): | |
| query_rating = "select * from rating where " | |
| if shape_id is not None: | |
| query_rating += "shape_id = '"+str(shape_id)+"' " | |
| if expert_id is not None: | |
| query_rating += "and expert_id = '"+str(expert_id)+"' " | |
| return query_rating | |
| def get_shape_query(ase, level_1, level_2, level_3): | |
| query_shape = "select * from shape where " | |
| if ase is not None: | |
| query_shape += "ase = '"+ase+"' " | |
| if level_1 is not None: | |
| query_shape += "and level_1 = '"+level_1+"' " | |
| if level_2 is not None: | |
| query_shape += "and level_2 = '"+level_2+"' " | |
| if level_3 is not None: | |
| query_shape += "and level_3 = '"+level_3+"'" | |
| return query_shape | |
| def get_expert_query(name, expertise): | |
| query_expert = "select * from expert where " | |
| if name is not None: | |
| query_expert += "name = '"+name+"' " | |
| if expertise is not None: | |
| query_expert += "and expertise = '"+expertise+"' " | |
| return query_expert | |
| def apply_rating(name, expertise, tools_selected, | |
| rating_selected, ase, level_1, level_2, level_3, geojson): | |
| connection = init_connection() | |
| cursor = connection.cursor(prepared=True) | |
| query_shape = get_shape_query(ase, level_1, level_2, level_3) | |
| #tuple_shape = (ase, level_1, level_2, level_3) | |
| tuple_expert = (name, expertise, str(tools_selected)[1:-1]) | |
| cursor.execute(query_shape) | |
| record_shape = cursor.fetchone() | |
| print("Record Shape:", record_shape) | |
| print("Shape Select Query:", cursor.statement) | |
| if record_shape is None: | |
| tuple_insert_shape = (ase, level_1, level_2, level_3, json.dumps(geojson)) | |
| print(len(geojson)) | |
| cursor.execute(query_insert_shape, tuple_insert_shape) | |
| connection.commit() | |
| shape_id = cursor.lastrowid | |
| print(f"Insert query executed with id : {shape_id}") | |
| else: | |
| shape_id = record_shape[0] | |
| query_expert = get_expert_query(name, expertise) | |
| cursor.execute(query_expert) | |
| record_expert = cursor.fetchone() | |
| print("Expert Select Query:", cursor.statement) | |
| if record_expert is None: | |
| cursor.execute(query_insert_expert, tuple_expert) | |
| connection.commit() | |
| expert_id = cursor.lastrowid | |
| else: | |
| expert_id = record_expert[0] | |
| query_rating = get_rating_query(shape_id, expert_id) | |
| cursor.execute(query_rating) | |
| record_rating = cursor.fetchone() | |
| print("Ratings Select Query:", cursor.statement) | |
| print("Shape ID", shape_id, "...Expert ID", expert_id) | |
| tuple_rating = (shape_id, expert_id, rating_selected) | |
| if record_rating is None: | |
| cursor.execute(query_insert_rating, tuple_rating) | |
| connection.commit() | |
| else: | |
| cursor.execute(update_rating_query(shape_id, expert_id, rating_selected)) | |
| connection.commit() | |