python
  • mysql
  • python-2.7
  • 2017-02-20 2 views 0 likes 
    0
    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. Когда я запускаю этот запрос, он дает мне только один. Как я могу получить последние две записи?получить последние два запроса с mysql в python

    +1

    ты не можешь перебирать курсор с «для программы в auto_cur:»? Кроме того, действительно ли ваш запрос sql возвращает две строки? – ceteras

    ответ

    2

    Вы должны попробовать это:

    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() 
    ] 
    

    Это называется список понимание

    0

    Вы переписываете dict в своем цикле, создаете список и добавляете его к каждой итерации.

    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 = {} 
        .... 
    

     Смежные вопросы

    • Нет связанных вопросов^_^