CSV에서 값을 가져 와서 데이터베이스에 넣으려고합니다. 큰 문제없이이 작업을 처리하고 있습니다.Python CSV를 읽고 MySQL 데이터베이스에 값을 넣으십시오.
하지만 csv에 다시 쓸 필요가 있으므로 다음에 스크립트를 실행하면 csv 파일의 표시에서 DB로만 값을 입력합니다.
시스템의 CSV 파일은 매 24 시간마다 자동으로 플러시되므로 csv에 마르크가 표시되지 않을 수 있습니다. 그래서 기본적으로 모든 값을 데이터베이스에 넣습니다.
나는이 스크립트를 매 30 분마다 실행할 계획이므로 csv 파일에 48 자국이 있거나 심지어는 그 표식을 제거하고 매번 파일 아래로 옮길 수 있습니까?
파일을 삭제 한 다음 스크립트에서 파일을 다시 작성하면 모든 스크립트가 실행될 때마다 새 파일이 실행되지만 시스템에 아무런 문제가 없으므로 훌륭한 옵션이 아닙니다.
이import csv
import MySQLdb
mydb = MySQLdb.connect(host='localhost',
user='root',
passwd='******',
db='kestrel_keep')
cursor = mydb.cursor()
csv_data = csv.reader(file('data_csv.log'))
for row in csv_data:
cursor.execute('INSERT INTO `heating` VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,)',
row)
#close the connection to the database.
mydb.commit()
cursor.close()
import os
print "Done"
내 CSV 파일 형식 :
희망 너희들이 도움이 될 수 있습니다..
당신에게
파이썬 코드 감사
2013-02-21,21:42:00,-1.0,45.8,27.6,17.3,14.1,22.3,21.1,1,1,2,2
2013-02-21,21:48:00,-1.0,45.8,27.5,17.3,13.9,22.3,20.9,1,1,2,2
나는이 답변을 좋아하지만 행을 가져올 수 없다. 우리는 심지어 lastline 파일에 0을 넣고있다 '(str (cur_row))'는 0을 되풀이한다. 파일이 00:01에 플러시 될 때 염두에 두어야한다. 00 라인은 새로운 csv 파일과 관련이 없으므로 어딘가에 시간을 확인해야한다고 가정합니다. – ZeroG
예, 코드가 잘못 됐습니다. 끝에있는'cur_row + = 1' 문을 이동해야합니다. for 루프. 00:01의 플러시에 관해서는 lastline 파일의 현재 시간과 쓰기 날짜를 확인해야합니다. – Xion345
@ZeroG : 파일이 플러시되었는지 감지하는 더 좋은 방법은 CSV 파일의 크기를 마지막 처리 된 줄 외에 마지막 줄 파일에 저장하는 것입니다. 파일을 두 번 연속 실행하면 파일 크기가 감소하면 CSV 파일이 삭제되었음을 알 수 있습니다. – Xion345