26

これが私が現在持っているものです:

conn = sqlite3.connect(dbfile)
conn.text_factory = str ## my current (failed) attempt to resolve this
cur = conn.cursor()
data = cur.execute("SELECT * FROM mytable")

f = open('output.csv', 'w')
print >> f, "Column1, Column2, Column3, Etc."
for row in data:
  print >> f, row
f.close()

次のような出力を含む CSV ファイルが作成されます。

Column1, Column2, Column3, Etc.
(1, u'2011-05-05 23:42:29',298776684,1448052234,463564768,-1130996322, None, u'2011-05-06 04:44:41')

行を括弧で囲んだり、引用符や文字列の前に「u」を付けたりしたくありません。これをすべてせずに行をcsvに書き込むにはどうすればよいですか? ありがとう、

4

4 に答える 4

30

あなたが現在行っているのは、タプルの python 文字列表現、つまり の戻り値を出力することですstr(row)。これには、引用符、'u'、括弧などが含まれます。

代わりに、CSV ファイル用に適切にフォーマットされたデータが必要です。さて、csvモジュールを試してみてください。当然のことながら、CSV ファイル用にフォーマットする方法を知っています。

with open('output.csv', 'wb') as f:
    writer = csv.writer(f)
    writer.writerow(['Column 1', 'Column 2', ...])
    writer.writerows(data)
于 2012-05-09T19:31:49.070 に答える
8

sqlite データベース テーブルを csv ファイルに変換することは、sqlite3 ツールを使用して直接行うこともできます。

>sqlite3 c:/sqlite/chinook.db
sqlite> .headers on
sqlite> .mode csv
sqlite> .output data.csv
sqlite> SELECT customerid,
   ...>        firstname,
   ...>        lastname,
   ...>        company
   ...>   FROM customers;
sqlite> .quit

上記の sqlite3 コマンドはdata.csv、現在のディレクトリに呼び出される csv ファイルを作成します (もちろん、このファイルには任意の名前を付けることができます)。詳細については、http ://www.sqlitetutorial.net/sqlite-export-csv/ をご覧ください。

于 2018-05-08T14:04:52.307 に答える
0

テーブルが1つしかない場合は、ばかげていますが簡単なものを使用しました!

まず、データベースを Pandas DataFrame に変換しました

conn = sqlite3.connect(database file)
df = pd.read_sql_query("select * from TABLE", conn)

次に、dfをCSVファイルに変換します

df.to_csv(r'...\test_file.csv')

したがって、CSV ファイルは test_file.CSV という名前で作成されます。

于 2022-02-17T13:59:45.633 に答える