2017-02-15 1 views
0

병 프레임 워크를 사용하여 REST API를 작성하려고합니다. 내 기본 클래스 CRUD에는 두 가지 방법이 있습니다. 기본 쿼리는 쿼리를 수행하고 get_values ​​메서드는 결과를 반복하고 데이터를 반환합니다. 하지만 개체를 ​​iterable 오류지고 있어요. 나는 모든 세 개의 개체에 대한 참조를 얻고 원시 데이터를 인쇄했을 때 병 프레임 워크 SqlAlchemy 형식 오류 : 개체가 반복 가능하지 않음

class InfluencerCrud(CrudObject): 
def base_query(self, db_session, request_params): 

    return db_session.query(Groups, GroupLeaders, Users) \ 
      .filter(GroupLeaders.id == Groups.group_leaders_id) \ 
      .filter(Users.id == GroupLeaders.users_id) 

def get_values(self, db_session, request_params, raw_result): 
    logging.error(raw_result) 
    for group, group_leader, user in raw_result: 
     data = as_dict(group, include_columns = ['clicks_estimated', 'completeness', 'cpc', 'created_at', 
               'description', 'guid','languages_id', 'name', 'registration_status', 
               'size', 'url', 'verticals_id']) 
     data['addresses_id'] = user.addresses_id 
     data['user'] = as_dict(user, include_columns = ["addresses_id", "created_at", "education_id", "email", 
                 "email_verified_at", "gender", "income_id", "marital_status_id", 
                 "name_first", "name_last", "phone", "status", "updated_at", "worK_status_id"]) 
     data['user']['race_id'] = [] 
     c = session.query(UserHasRace.race_id).filter(UserHasRace.user_id == user.id) 
     for r, in c: 
      data['user']['race_id'].append(r) 
     data['user']['children'] = [] 
     c = session.query(UserChildren).filter(UserChildren.user_id == user.id) 
     for r in c: 
      data['user']['children'].append(get_dict_obj(r)) 
     picurl = None 
     up = session.query(UserPicture).filter(UserPicture.id == user.pictures_id).first() 
     if up != None and up.file_name != None: 
      i = up.file_name.rfind('/') 
      picurl = linqia.system.config.avatars.s3_url + 'user_pictures/' + up.file_name[i + 1:] 
     data['user']['picture_url'] = picurl 
     return data 

다음

오류

File "/home/linqia-api-internal/current/api-internal/source/influencers/influencer.py", line 42, in get_values [Tue Feb 14 20:41:10 2017] [error] [client ::1] for group, group_leader, user in raw_result: [Tue Feb 14 20:41:10 2017] [error] [client ::1] TypeError: 'Groups' object is not iterable

입니다. 나는 그들을 반복 할 수 없다.

감사합니다. 감사합니다.

답변

0

고침을 받았습니다. 내 get_values ​​함수는 내가 작성한 모든 쿼리를 호출 했으므로 결과적으로 모든 쿼리 (그룹, 그룹 리더, 사용자)의 튜플이되었습니다 그래서 튜플로 액세스해야했습니다.

관련 문제