1

いくつかのデータを登録したデータベースがあります。すべての行を選択して、テーブルのすべての行を辞書に入れようとしましたが、それができないようです。

これはコードです:

db = MySQLdb.connect("localhost","root","aqw","PFE_Project" )
cursor = db.cursor()
sql = "SELECT * FROM ServerComponents"

try:

   cursor.execute(sql)
   results = cursor.fetchall()
   nbre_row = cursor.rowcount

   server_name = []
   server_price = []
   for row in results:
      server_id = row[0] 
      server_name.append(row[1])
      core_number = int(row[2])
      clock_speed = int(row[3])
      ram = int(row[4])
      rom = row[5]
      hdd = int(row[6])
      video_card = row[7]
      cache_memory = row[8]
      # calculation metric is a function that i used to calculate the server prize
      p = calculations_metric (core_number, clock_speed, ram, hdd, video_card)
      server_price.append(p)

      try :
          # i wanna the attribute "response" be iterative
          response = {"Server Name" : server_name , "Server Price" : server_price }

      except :
          print "error in response"

except:
   print "Error: unable to fetch data"

print(response)

これは私が得た結果です:

{"Server Name": ["Dell1", "Dell2"], "Server Price": [149, 151]}

しかし、私が見たい結果は次のようなものです:

{"Server Name" : Dell1, "Server Price": 149}
{"Server Name" : Dell2, "Server Price": 151}

誰でも私を助けることができますか?

4

2 に答える 2

2
servers = []
for row in results:
   result = {}
   result['server_name'] = row[1])
   p = calculations_metric (core_number, clock_speed, ram, hdd, video_card)
   result['server_price'] = p
   servers.append(result)
于 2013-03-04T09:46:57.837 に答える
0

これを試してください

db = MySQLdb.connect("localhost","root","aqw","PFE_Project" )
cursor = db.cursor()
sql = "SELECT * FROM ServerComponents"

response = []
try:

   cursor.execute(sql)
   results = cursor.fetchall()
   nbre_row = cursor.rowcount

   for row in results:
      local_dict = {}
      server_id = row[0] 
      local_dict["Server Name"] = row[1]
      core_number = int(row[2])
      clock_speed = int(row[3])
      ram = int(row[4])
      rom = row[5]
      hdd = int(row[6])
      video_card = row[7]
      cache_memory = row[8]
      # calculation metric is a function that i used to calculate the server prize
      p = calculations_metric (core_number, clock_speed, ram, hdd, video_card)
      local_dict["Server Price"] = p
      response.append(local_dict)


except:
   print "Error: unable to fetch data"

print(response)

リストに追加する代わりに、ローカル dict を作成し、そのローカル dict を応答に追加します。

于 2013-03-04T09:46:41.647 に答える