私は数年間使用した成績表を持っています。同僚が使用したいので少しクリーンアップしようとしていますが、実際にはユーザーの準備ができておらず、個人的に準備ができています。とにかく、私は自分の学生リストの更新を自動化しようとしていました。私は次のことを試しました:
import csv
import sqlite3
f = csv.reader(open('students.csv'))
db = sqlite3.connect('gradebook.db')
cursor = db.cursor()
for row in f:
print row
cursor.execute('INSERT OR REPLACE INTO students (id, name, class, gender, birthday, something, period, section_number, subject, begin_date, end_date, status, absents, tardies) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)', row)
db.commit()
db.close()
これは新入生には有効ですが、データベースには、学校からのCSVダンプ(メモ、現在の章など)で参照されていない列もいくつかあります。上記のコードを実行すると、参照されていない列にあるものはすべてNULLに設定されます。executeコマンドで参照されていない列を保持する方法はありますか?
編集:私の無能さを通して、たくさんの異なることを試みましたが、何もうまくいきませんでした。ループで次のようになってしまい、エラーが発生しました。
cursor.execute('INSERT OR REPLACE INTO students (notes, id, name, class, gender,
birthday, something, period, section_number, subject, begin_date, end_date,
status, absents, tardies) VALUES ((select notes from students where id =
row[0]),?,?,?,?,?,?,?,?,?,?,?,?,?,?)', row)
保存しようとしているのはメモです。他のすべてのフィールドは、学生のIDに基づいて更新できます。しばらくあきらめています。欲求不満になりすぎます。