2012-12-27 3 views
1

현재 정보로 텍스트 파일을 생성 할 수는 있지만 어떤 이유로 데이터를리스트로 보낼 수 없습니다. 나는 2 가지 방법을 시도했다 :mysql에서 파이썬으로 이름 목록 생성하기

cnx = mysql.connector.connect(user='root', database='smor') 
cursor = cnx.cursor() 
sqlQuery = ("SELECT id,name,CAST(aa_seq as CHAR(65535)) aa_seq FROM smor.domain_tbl WHERE domain_type_id=5 AND domain_special IS NULL LIMIT 100000") 
cursor.execute(sqlQuery) 

print "Generating FASTA file: ", FASTA_File1 
with open(FASTA_File1, "w") as FASTA1: 
    for (aa_id, name, aa_seq) in cursor: 
     FASTA1.write(">" + name + '\n' + aa_seq + '\n') 
     print ">" + name + '\n' + aa_seq 

ListOfNames =[] 
for (aa_id, name, aa_seq) in cursor: 
     ListOfNames.append(name) 
cursor.close() 
print "ListOfNames", ListOfNames 

이것은 성공적으로 이름과 아미노산 서열을 텍스트 파일에 인쇄하지만 문자열은 비어있다. 다음은 콘솔 출력의 마지막 줄입니다.

>NC_018581.1_05_011_001_020 P 
RVPGEMYERAEDGALIPTGVRARWVDAPGSRREIVGPIARHPRIDGRRVDLDVVEEALAAVTGVTAAAVVGLPTDDGVEVGACVVLDRDDLDVPGLRRELSQTLAAHCVPTMISIVESIPLGTDGRPDHGEV 
ListOfNames [] 

목록에서 볼 수 있듯이 비어 있습니다. 커서가 위로 올라가서 커서를 닫고 위와 똑같이 재개했지만 두 번째 인스턴스의 목록 생성과 함께 다시 열 수 있다고 생각했습니다. 이 스크립트에서 오류가 발생하고 이유를 모르겠습니다.

데이터를 목록으로 직접 읽을 수 없습니까?

이론적으로 텍스트 파일에서 시퀀스의 이름을 나눌 수 있지만이 방법이 작동하지 않는 이유가 궁금합니다.

답변

0

예상대로 커서의 결과 집합을 한 번 읽은 다음 '소비'할 수 있습니다.

결과를 목록에 먼저 넣은 다음 목록을 반복하여 내용을 파일에 씁니다. 또는 두 루프를 하나의 루프로 수행하십시오.