-5

私のテキストファイルは次のようになります。

10May2013   3.1   http://ncbi.org p.sojae_aafeatureimp    p.sojae_aafeatureimp

10May2013   3.2   http://ncbi.org   p.sojae_aasequenceimp   p.sojae_aasequenceimp

10May2013   3.3   http://ncbi.org   p.sojae_blatalignment   p.sojae_blatalignment

これらの個別の行を解析して DB に挿入するにはどうすればよいですか?

DB 構造: (日付、バージョン、URL、名前、説明)

Python を使用して、テキスト ファイルから mysql に値を挿入する必要があります。これまでのところ、私のスクリプトは次のようなものです:

import MySQLdb, csv, sys
with open('externaldatabase.txt') as textfile:
  csvreader = csv.reader(textfile)
  csvdata = []
  for row in csvreader:
  csvdata.append(row)

conn = MySQLdb.connect (host = "localhost",user = "username", passwd = "password",db = "database_name")
c = conn.cursor()

for row in csvdata:
# Insert a row of data

c.execute("INSERT INTO externaldatabase (release_date, version, download_url, name, description) VALUES ('%s', '%s', '%s', '%s', '%s')" % (row))

conn.commit()
c.close()

しかし、エラーが発生しています:

Traceback (most recent call last):

File "csv1.py", line 16, in <module>

c.execute("INSERT INTO externaldatabase (release_date, version, download_url, name, description) VALUES ('%s', '%s', '%s', '%s', '%s')" % (row))

TypeError: not enough arguments for format string
4

1 に答える 1

1

区切り文字を csv.reader 関数に設定する必要があります。

csvreader = csv.reader(textfile, delimiter='\t')

コードでそれを行っていないため、Python は CSV ファイルの行を分割しません。そのため、エラーが発生します。


MySQL テーブルのすべての列を含むファイルがある場合は、LOAD DATA INFILE コマンドを使用できます。行ごとにロードする方がはるかに高速です。

LOAD DATA INFILE 'externaldatabase.txt'
INTO TABLE database_name.externaldatabase
FIELDS TERMINATED BY '\t';
于 2013-05-11T09:19:20.837 に答える