last_two_programs_dict = {}
auto_cur.execute(
"SELECT service_key, event_id, start_date_time, duration, prog_name "
"FROM autodb.ssr_events "
"WHERE (ca_details='FTA' OR ca_details='SUB') "
"AND recordable_event='1' "
"AND start_date_time > CURRENT_TIMESTAMP() + 180 "
"AND start_date_time <=> start_date_time "
"AND duration > '00:04:00' "
"AND service_key != '4061' "
"ORDER BY start_date_time ASC "
"LIMIT 2 "
)
last_two_programs = auto_cur.fetchall()
for program in last_two_programs:
last_two_programs_dict['service_key'] = event[0]
last_two_programs_dict['event_id'] = event[1]
last_two_programs_dict['start_date_time'] = event[2].strftime("%Y%m%dT%H%M%SZ")
last_two_programs_dict['duration'] = '0'+str(event[3])
last_two_programs_dict['program_name'] = event[4]
print "Last Two programs dict", last_two_programs_dict我想要最后两个programs。当我运行这个查询时,它只给我一个。我怎么才能得到最后两条记录呢?
发布于 2017-02-20 20:10:56
你应该试试这个:
last_two_programs = [
{
'service_key': event[0]
'program_id': event[1]
'start_date_time': event[2].strftime("%Y%m%dT%H%M%SZ")
'duration': '0' + str(event[3])
'program_name': event[4]
} for event in auto_cur.fetchall()
]这叫做列表理解
发布于 2017-02-20 19:59:14
您在循环中覆盖了字典,创建了一个列表,并在每次迭代时将字典附加到该列表中。
last_two_programs_list = []
for program in last_two_programs:
# create a new dict every iteration
last_two_programs_dict = {}
last_two_programs_dict['service_key'] = event[0]
last_two_programs_dict['event_id'] = event[1]
last_two_programs_dict['start_date_time'] = event[2].strftime("%Y%m%dT%H%M%SZ")
last_two_programs_dict['duration'] = '0'+str(event[3])
last_two_programs_dict['program_name'] = event[4]
# append the dict to the list
last_two_programs_list.append(last_two_programs_dict)此外,您可以直接迭代游标,而不是将结果集存储在列表中。
last_two_programs_list = []
for program in auto_cur:
# create a new dict every iteration
last_two_programs_dict = {}
....https://stackoverflow.com/questions/42343745
复制相似问题