データ挿入1~6の部分ですが、変数sqlにSQL文を代入した後、execute()が必要ではないでしょうか?
データが挿入されていないので select しても表示するものが無いのだと思います。
1Answer
Like!
Comments
@nabenabebe
Questionersql = "insert into ...."
と書かれている部分はsqlという変数(箱)に文字を入れているだけでこれ自身はデータベースを操作するものではありません。追記されたcsr.execute()ですが、これもデータベースへ「実行せよ」と命じているだけで「何を」という部分がありません。
create table でテーブルを作成する箇所や、select でデータを取得するところでもcsr.execute()を使っていますが、違いをよくみると足りない部分が理解できると思います。
特別、sqlite3の知識を持ち合わせていませんが、どんな場合にも言えることは
『エラーメッセージをちゃんと読みましょう。』です。TypeError: excute excepted at least 1 argument, got 0
Google翻訳:TypeError: 実行には少なくとも 1 つの引数が必要ですが、0 を取得しました (「実行」と訳されていますが、excuteのことでしょう)
「矢印で示された行番号24の
csr.execute()
に引数が無いよ」というエラーです。execute()の引数で複数のsqlを指定できるならば 最後に1回でよいですが、
1回一つだけなら、insert文一つ一つにexecute(sql)が必要だと思います。