1

現在、情報を含むテキスト ファイルを生成できますが、何らかの理由でデータを送信してリストに入れることができません。私はそれを2つの方法で試しました:

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

ご覧のとおり、リストは空のままです。おそらくカーソルが一番上に戻ることができないと思ったので、カーソルを閉じて上記とまったく同じように再度開きましたが、2番目のインスタンスでリストを生成しました。これによりスクリプトでエラーが発生しましたが、その理由はわかりません。

データを直接リストに読み込めないということですか?

理論的には、シーケンスの名前をテキスト ファイルから分割することはできますが、この方法が機能しない理由に興味があります。

4

1 に答える 1

0

ご想像のとおり、カーソルの結果セットは 1 回だけ読み取られ、その後「消費」されます。

最初にリスト内に結果を入れてから、リストを繰り返し処理してその内容をファイルに書き込みます。または、両方を 1 つのループで実行します。

于 2012-12-27T22:58:53.117 に答える