在Python中有一个迭代词典

2024-03-29 12:55:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据库,我在其中注册了一些数据。我试图选择所有的行,并试图把我的表中的每一行放入字典,但我似乎不能做到这一点。你知道吗

代码如下:

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}

有人能帮我吗?你知道吗


Tags: namedbsqlserverresponsepricecursorresults
2条回答

请试试这个

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添加到响应中。你知道吗

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)

相关问题 更多 >