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() | |