1

我目前能够生成包含信息的文本文件,但由于某种原因,我无法将数据发送到列表中。我试过两种方法:

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 []

如您所见,列表仍然为空。我想也许光标无法跳回顶部,所以我关闭了光标并完全按照上面的方式重新打开它,但在第二个实例中生成了列表。这导致脚本出错,我不知道为什么。

是不是数据不能直接读入列表?

从理论上讲,我可以将序列的名称从文本文件中拆分出来,但我很好奇为什么这种方法不起作用。

4

1 回答 1

0

正如您所怀疑的,游标的结果集可以被读取一次,之后它就被“使用”了。

只需先将结果放入列表中,然后遍历列表以将其内容写入文件。或者在一个循环中做这两个。

于 2012-12-27T22:58:53.117 回答