私が実行しているmysqlテーブルの問題にデータをロードするためのpythonスクリプトは次のとおりです。
Warning: Incorrect integer value: 'user_id' for column 'user_id' at row 1
+'VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)',row)
Warning: Invalid TIMESTAMP value in column 'edit_time' at row 1
+'VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)',row)
これは多くの警告行の 1 行にすぎません。エラーを理解しています。私の理解に基づいて、行がまだ文字列形式であるか、変換が適切に行われていないと推測します。tsvファイルから読み取った後、行の各要素をキャストすることを考えていました。
example: int(row[0])
しかし、関連するタイムスタンプ要素の MySQL タイムスタンプ タイプと一致するように正しくキャストする方法がわかりません。
#load training data
def readtsv(file_name, con):
cur = con.cursor()
with open('file.tsv', 'rb') as f:
for row in csv.reader(f, delimiter='\t'):
cur.execute('INSERT INTO mytable(user_id, article_id, revision_id, namespace, edit_time, md5, reverted, reverted_user_id, reverted_revision_id, delta, cur_size)'
+'VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)',row)
try:
con.commit()
except Exception, e:
print 'unable to commit'
print e