今回も勉強になりました😄
[訂正]
・2:54 テールブル(誤) → テーブル(正) です!
・3:06 のユーザテーブル、ジョブテーブルも同様です....
コードのご教授ありがとうございます。まさにググろうとしていたものです。早速参考にしてやってみたところうまく行きました。ありがとうございました。
Flaskの動画でご質問させて頂き、そのご回答としてこの動画を教えてもらい大変参考になりました。本当にありがとうございました。
コメントありがとうございます😊
もしも既にUPDATEが成功されてたら余計かもしれませんが、カラムarrival_dayが変数arraival_dayの値と一致するレコードの、カラムtitleを変数titleの値で上書きする、Flaskのサンプルコードを記載しておきますね!
======== Python Flask Updateサンプル ========
con = sqlite3.connect(DATABASE)
con.execute('UPDATE books SET title=? WHERE arrival_day=?', [title, arrival_day])
con.commit()
con.close()
最近、大学でSQLのACID特性について知りました。
記述までは習っていなかったのでとても参考になります!
SQLのできる内容として、pythonだとpandasが少し近いような…??
大学でSQLを学んでいるのですね!凄いです😊
ちなみにBigQueryはどちらかというとBASE特性と思われますが、非常に良い製品です!
そうですね!!SQLとPandasのDataFrame処理は近いです!
なので「SQLで書くか、メモリに乗せてPandasで書くか?」みたいな議論はデータ系のエンジニアあるあるですね😆
いつも動画を非常に参考にさせていただいております。
DBについてまったく知識がなく、初歩的な質問となり恐縮なのですが、
動画冒頭のリレーショナルDBの説明中に、職業IDを紐づけることで管理しやすくなるとありましたが、
そもそも1つの表の中に職業名まで記載したほうがわざわざ紐づけをする必要がなくわかりやすいのではないだろうか?と思いましたが、なぜ2つにわざわざ分けているのでしょうか。
ご質問ありがとうございます!!凄い鋭い質問で嬉しいです😊
おっしゃるように1つのテーブルにまとめた方が便利に感じますが、実はデメリットが多いです。1つのテーブルにまとめると、そのテーブルが肥大化してしまってDBの容量を圧迫したり、レコードの変更が大変というデメリットがあります。
例えば、職業「医者」を「医師」に変更したいと思った場合、職業テーブルがあれば1レコードだけ変更すれば良いのに、1つのテーブルにまとめてしまうと「医者」となっている全員のレコードを変更する必要があります。
このように(重複を除くために)複数のテーブルに分けることを「正規化」と良い、リレーショナルDBでは基本的に正規化を行うことが重要になります。他のタイプのDBだと正規化をあえて行わないようなケースもあります😉
上記に述べた以外のデメリットもあり、正規化の話はこれだけで1本の動画が作れるぐらい深い内容なので、いつか動画にできたらと思います!!
もう一つ教えて頂けませんか?やりたいことはテーブルbooksからカラム入荷日より読出したい入荷日を検索し、その行のタイトルと金額をformに表示させ、金額などを変更したあとupdateさせる。このupdateは教えて頂いたコードでうまく行きました。読出し(select)とformへの表示をやっていますがうまく行きません。ヒントとなるサプー動画があれば教えて頂けないでしょうか?
ご質問ありがとうございます😊
① 入荷日による絞り込みをしたデータの読み出しは、SELECTのWHEREを使ったらできますよ😉このSQL動画の21:24ぐらいからの部分を参考にしてみてください!
② formに値を表示させるのはinputタグのvalueという属性に値を設定してあげたらOKです!変数booksと同じような形で、FlaskでPython側からHTML側にデータを渡して、 みたいに埋め込めばデータが表示されます!
サプーさん、ありがとうございます わかりやすかったです
サプー先生について行きます。
コメントありがとうございます😊
私が持っているノウハウやテクニックは、アップした沢山の動画の中に詰まっているので、ぜひ、色々見てみてもらえたら嬉しいです!
文法の勉強の環境って語呂良くて3回聞き直した
なんで外部キーに名前つけるんやろ
サプー先生教えて下さい。
前回「変数booksと同じような形で、FlaskでPython側からHTML側にデータを渡して・・・」のところで、
@app.route('/read', methods=['POST'])
def read():
arrival_day = request.form['arrival_day']
con = sqlite3.connect(DATABASE)
read_books = con.execute('SELECT * FROM books WHERE arrival_day=?', [arrival_day])
con.close()
※ここの部分の記述がよくわかりません。※
return render_template('form.html', read_books=read_books)
何卒、ご教授よろしくお願いいたします。
ご質問ありがとうございます😊
SELECTで取得した値をHTML側に渡すときの処理ですね!Flask動画の30:22で解説しているコードと同じように、forで回して「辞書を要素にもつbooksというリスト」を作成してあげたら良いのではないでしょうか?ぜひ、動画内のコードを参考にしてみてください😉
Flask動画 ▶︎ ua-cam.com/video/EQIAzH0HvzQ/v-deo.html
声と発音が綺麗でとても聴きやすかったです。
内容も分かりやすくてSQL構文の全体像がなんとなく分かりました。
ありがとうございます。