简体   繁体   中英

Python With MySQL for splitting json data and inserting to Table multiple rows

I am working on MySQL DB using python . I have created a table named "Systems". I want to insert the data to table.

My Table : id Typeid Types

Columns . I get the data from my API in JSON format as input to the table . ie {"Typeid":"1","types":"a,b,c,d,e"}

I want to store the data into my table in the following way:

id  Typeid  Typed
1    1       a
2    1       b
3    1       c
4    1       d
5    1       e

I want to this to be done in python script. I have script for inserting the data to table. First to check if the data exists into the table later insert the data to table.

def POSTSubsystem():
try:
     #Fetching the json data sent from the client application and storing it into a variable.   
     std_json = request.json
     #storing Model_Name json value into a variable.
     Type_name = std_json['Type_name']
     Typed= std_json['Typed']
     #Sql Query to check for where the data exists or not 
     check_query = "SELECT Typeid,(SELECT COUNT(*) FROM Types_data_table WHERE Typed="+'"'+str(Typed)+'"'+") as `Sub_COUNT` FROM Types WHERE Type_name="+'"'+str(Type_name)+'"'+";"
      #Fetching the data and storing it into data frame from the function
     results = sql_connection(check_query,"retrive")
     print(results)
      #checking if the Data frame contains any value
     if len(results) != 0:
         model_id = results.iloc[0]['Typeid']
         #checking the results contain any vlaue to it. Here >1 implies number of row/Count of row that query retrives
         if results.iloc[0]['Sub_COUNT'] >= 1:
             #send message if the model already exists in the data base
             resp = jsonify('Subsystem already exists!')
             return resp
         else:
             #query to insert the new data received json value from client into database 
             query = "INSERT INTO Types_data_table (Typeid,Typed) VALUES("+ str(Typeid)+',"'+str(Typed)+'"'+");"
             #fetching the response from the server
             resu = sql_connection(query,"inst")
             #sending the response to client
             resp = jsonify('Subsystem added successfully!')
             return resp
     else:
            x =  '{"Message":"No Data Available For this model"}'
            return (x)
except mysql.connector.ProgrammingError as err:
    return err.msg

This works only if the data is single string . But want the data to be split and inserted to Table in Python

subs2 = Typed.split(',')
#this splits the data with comma separated and stores into the variable

I want to insert sub2 data into the table like expected output written above. Thanks in advance.

Simple way is to add for loop to this function:

def POSTSubsystem():
try:
      #Fetching the json data sent from the client application and storing it into a variable.   
 std_json = request.json
 #storing Model_Name json value into a variable.
 Type_name = std_json['Type_name']
 Typed= std_json['Typed']
 subs2 = Typed.split(',')
 for ids in subs2 :
 #Sql Query to check for where the data exists or not 
 check_query = "SELECT Typeid,(SELECT COUNT(*) FROM Types_data_table WHERE Typed="+'"'+str(ids)+'"'+") as `Sub_COUNT` FROM Types WHERE Type_name="+'"'+str(Type_name)+'"'+";"
  #Fetching the data and storing it into data frame from the function
 results = sql_connection(check_query,"retrive")
 print(results)
  #checking if the Data frame contains any value
 if len(results) != 0:
     model_id = results.iloc[0]['Typeid']
     #checking the results contain any vlaue to it. Here >1 implies number of row/Count of row that query retrives
     if results.iloc[0]['Sub_COUNT'] >= 1:
         #send message if the model already exists in the data base
         resp = jsonify('Subsystem already exists!')
         #return resp
     else:
         #query to insert the new data received json value from client into database 
         query = "INSERT INTO Types_data_table (Typeid,Typed) VALUES("+ str(Typeid)+',"'+str(ids)+'"'+");"
         #fetching the response from the server
         resu = sql_connection(query,"inst")
         #sending the response to client
         resp = jsonify('Subsystem added successfully!')
         #return resp
 else:
        resp =  '{"Message":"No Data Available For this model"}'
        #return (x)
return resp
except mysql.connector.ProgrammingError as err:
return err.msg

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM