从mysql生成python中的名称列表

时间:2012-12-27 22:48:58

标签: python mysql list mysql-connector-python

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

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

如您所见,列表仍为空。我想也许光标不能跳回到顶部所以我关闭光标并完全重新打开它,但是在第二个实例中生成列表。这导致脚本出错,我不知道为什么。

是否无法将数据直接读入列表?

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

1 个答案:

答案 0 :(得分:0)

正如您所怀疑的那样,光标的结果集可以被读取一次,然后被“消耗”。

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