Skip to content
Advertisement

constructing a message format from the fetchall result in python

*New to Programming

Question: I need to use the below “Data” (two rows as arrays) queried from sql and use it to create the message structure below.

data from sql using fetchall()

Data = [[100,1,4,5],[101,1,4,6]]

##expected message structure

message = {
            "name":"Tom",
            "Job":"IT",
            "info": [
               {
                "id_1":"100",
                "id_2":"1",
                "id_3":"4",
                "id_4":"5"
                },
               {
                "id_1":"101",
                "id_2":"1",
                "id_3":"4",
                "id_4":"6"
                },  
             ]
}

I tried to create below method to iterate over the rows and then input the values, this is was just a starting, but this was also not working

def create_message(data)
    for row in data:
       {
        "id_1":str(data[0][0],
        "id_2":str(data[0][1],
        "id_3":str(data[0][2],
        "id_4":str(data[0][3],
       }

Latest Code

def create_info(data):
    info = []
    for row in data:
        temp_dict = {"id_1_tom":"","id_2_hell":"","id_3_trip":"","id_4_clap":""}
        for i in range(0,1):
            temp_dict["id_1_tom"] = str(row[i])
            temp_dict["id_2_hell"] = str(row[i+1])
            temp_dict["id_3_trip"] = str(row[i+2])
            temp_dict["id_4_clap"] = str(row[i+3])
        info.append(temp_dict)
    return info

Advertisement

Answer

Edit: Updated answer based on updates to the question and comment by original poster.

This function might work for the example you’ve given to get the desired output, based on the attempt you’ve provided:

def create_info(data):
    info = []
    for row in data:
        temp_dict = {}
        temp_dict['id_1_tom'] = str(row[0])
        temp_dict['id_2_hell'] = str(row[1])
        temp_dict['id_3_trip'] = str(row[2])
        temp_dict['id_4_clap'] = str(row[3])
        info.append(temp_dict)
    return info

For the input:

[[100, 1, 4, 5],[101,1,4,6]]

This function will return a list of dictionaries:

[{"id_1_tom":"100","id_2_hell":"1","id_3_trip":"4","id_4_clap":"5"}, 
{"id_1_tom":"101","id_2_hell":"1","id_3_trip":"4","id_4_clap":"6"}]

This can serve as the value for the key info in your dictionary message. Note that you would still have to construct the message dictionary.

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement