0

次のスクリプトがあります。これは、結果を画面に出力するため、すべての人の助けを借りてほぼ完了しています。また、これと同じ画面出力を取得してテキストファイルにダンプするステップをもう1つ追加することも検討しています。

私はこれがで行われたと思いましたfile.write()

しかし、結果からファイルに情報を書き込むためにそれを取得する方法がわかりません。助けてください、私はPythonに非常に慣れていないので、少し迷って本からそれを理解しようとしています。

これで出力されますが、クエリによって返されるものの最後の行だけです。最終的には、おそらく1行を印刷してから何度も上書きするので、すべてのフェッチまたは結果の全体を印刷する必要があります。

import adodbapi

# Connect to the SQL DB    
conn = adodbapi.connect("Provider=SQLOLEDB; SERVER=xx.x.xx.x; Initial Catalog=master_db;User Id=user; Password=pass; ")
curs = conn.cursor()

# Execute SQL procedure things_referencing"    
curs.execute('util.things_procedure', )
results = curs.fetchall()

for row in results:
    print row

f = open('test.txt', 'w')
s = str(row)
f.write(s)
f.close()

conn.close()
4

2 に答える 2

10

「結果」タプルの各「行」はレコードタプルです。このデータをどのようにフォーマットするかはあなた次第ですが、最も基本的なレベルでは、次の文字列に変換できます。str(row)

次に、ファイルの読み取りと書き込みの方法に関するPythonドキュメントを読んでください:http:
//docs.python.org/tutorial/inputoutput.html

アップデート

新しいコード例を参照すると、forループを実行して各行を出力してから、ファイルを開いて、その行がforループから割り当てられた最後の値のみを書き込んでいます。印刷するforループは、次に行う書き込み操作とは無関係です。rowのすべての値が割り当てられていましたがresults、最後に割り当てられた値を1回だけ使用しました。

最初にファイルを開き、次にループを開始して、行のすべての値を書き込みます。

with open('test.txt', 'w') as f:
    for row in results:
        print row
        f.write("%s\n" % str(row))

コンテキストを使用する場合with、そのスコープを離れると、ファイルが自動的に閉じられます。を使用して文字列に変換するだけでなく、文字str列の書式設定を使用して、改行文字を追加できます。

于 2012-04-20T17:39:53.913 に答える
1

それは確かにfile.writeで行われますが、最初にファイルを開く必要があります。したがって、forループを次のように変更します

f = open('/path/to/file', 'w')
for row in results:
    f.write(row)
f.close()
于 2012-04-20T17:40:51.643 に答える