2014-07-25 9 views
2

저는 파이썬 스크립트가 있는데, 매번 wait_for_page 호출이 만들어지면 페이지를 데이터베이스에 대기하는 데 걸리는 시간이 기록됩니다. 쿼리는 다음과 같습니다 : 때때로pyformat-parameters 처리에 실패했습니다. 'MySQLConverter'객체에는 '_list_to_mysql'속성이 없습니다.

conn = mysql.connector.connect(**config) 
    connect = conn.cursor() 
    params = {'build': self.tc.tag, 'page': unicode(self), 'object_id': self.object_id, 'page_header': 
       self.page_header, 'interval': t.interval, 'timestamp': timestamp} 
    query = u'INSERT INTO page_load_times (build, page, object_id, page_header, elapsed_time, date_run) ' \ 
      'VALUES (%(build)s, %(page)s, %(object_id)s, %(page_header)s, %(interval)s, %(timestamp)s)' 
    connect.execute(query, params) 
    conn.commit() 
    conn.close() 

이 실행될 때, 나는 말한다 오류 얻을 :

"Failed processing pyformat-parameters; %s" % err) 
ProgrammingError: Failed processing pyformat-parameters; 'MySQLConverter' 
object has no attribute '_list_to_mysql' 

내가 그것을 고치 갈 방법 만 확실,이 원인을 알 수 있습니다. 'page': unicode(self) 매개 변수는 때때로 결과로 목록을 가져옵니다. 이 문제를 해결하기위한 시도에서

, 나는 다음과 같이 문자열로 목록을 추출하는 위의 스크립트를 쥐게 :이 프로그램을 실행할 때

page_list = u'{}'.format(self) 
    page_results = "('%s')" % "','".join(page_list) 
    params = {'build': self.tc.tag, 'page': page_results, 'object_id': self.object_id, 'page_header': 
       self.page_header, 'interval': t.interval, 'timestamp': timestamp} 

, 지금 점점 오전 오류는 데이터이다 들판에서 너무 길다. 나는 개별적과 같이보고 내 페이지 결과가 각 문자가 파싱 것을 찾기 위해, 그것을 디버깅 :

u'(\\'A\\',\\'p\\',\\'p\\',\\'M\\',\\'a\\',\\'i\\',\\'n\\',\\'M\\',\\'e\\',\\'n\\',\\'u\\',\\':\\',\\' \\',\\'N\\',\\'o\\',\\'n\\',\\'e\\')' 

답변

1

그래서 해결책은 page_header를 받아 다음을 수행하기위한 것이었다는 목록의 인스턴스에있는 경우 그 목록을 문자열로 만드십시오 :

conn = mysql.connector.connect(**config) 
    connect = conn.cursor() 
    page_list = u'{}'.format(self) 
    page_header_list = u'{}'.format(self.page_header) 

    if isinstance(page_header_list, list): 
     page_header_list = ', '.join(page_header_list)[0:100] 

    params = {'build': self.tc.tag, 'page': page_list, 'object_id': self.object_id, 
       'page_header': page_header_list, 'interval': t.interval, 'timestamp': timestamp} 
    query = u'INSERT INTO page_load_times (build, page, object_id, page_header, elapsed_time, date_run) ' \ 
      'VALUES (%(build)s, %(page)s, %(object_id)s, %(page_header)s, %(interval)s, %(timestamp)s)' 
    connect.execute(query, params) 
    conn.commit() 
    conn.close() 
0

감사합니다. @DarthOpto, 당신은 나에게 많은 빛을주었습니다. 변수 주위에 srt을 넣어 해결했습니다.

params = {'build': self.tc.tag, 'page': srt(page_list),'object_id': self.object_id, 
      'page_header': srt(page_header_list),'interval': t.interval,'timestamp': timestamp} 
관련 문제