
発音暗記アプリの実装(2)
(Python学習初心者の試行錯誤・備忘録です)
まず、前回
CSVファイルを開くための画面を作って、遷移するとかややこしく考えてしまったのですけど、TkEasyGUIをいじっているうちに、ずっと簡単にできることがわかりました。
filename = eg.popup_get_file("CSVファイルを選択")
これだけですよ。これで、ファイル選択画面ひらくし、ファイルへのパスが文字列としてfilenameに入る。自分は何てややこしいことしていたんだろう。なんだか笑えてきてしまいます。
では、実際に教材データを読み込んでSQLiteに格納します。
CSVデータの読み込みは
SQLiteへのデータ書き込みは
でやっていましたので、それを組み合わせてみます。
#実行部
window = make_main()
while True:
event, value = window.read()
print(event)
if event == eg.WIN_CLOSED or event == "Exit":
break
elif event == "LoadCSV":
mycsv = eg.popup_get_file("CSVファイルを選択",
file_types=(("All Files", "*.*"), ("CSV Files", "*.csv"), ))
mydb = "mydb.sqlite3"
con =sqlite3.connect(mydb)
with open(mycsv, newline='', encoding='utf-8') as csvfile:
con = sqlite3.connect(mydb)
con.execute("DELETE FROM t_shengci")
csvreader = csv.reader(csvfile, delimiter=',')
for row in csvreader:
con.execute("INSERT INTO t_shengci(hanzi, pinyin) VALUES('{}','{}')"
.format(row[0],row[1]))
con.commit()
con.close()
window.close()
実行して、DB Browser for SQLiteで見てみると

正常にデータが格納されています。これで解決。