投稿

7月 1, 2018の投稿を表示しています

Translate

Python 入門 SQL直書きもあった

Previously : https://masafisan.blogspot.com/2018/07/python-sql.html 前回は、Python MVCはSQLで書かないとあった。 今回は、書く方法もあるという事。 こんな感じ。 sql = 'select * from hello_friend' data = Friend.objects.raw(sql) クエリセットのrawメソッドにSQLを渡せば実行出来るみたい。 が、読んでる本では、薦めていなかった。 MVCのMは非常に迷う。 はっきり言って、用意されたクエリセットのメソッドだけで、複雑なSQLが組める気はしない。 Microsoft系言語では、Mのモデルは自由な感じだった。 Pythonも自由ではあると思うのだけれども、自分の読んでいるPython入門書では薦めていなかった。 データベースが変わった際に、SQLだと、お作法が変わるから書かない方が良いとあるのだけれども。。。 データベースが変わると結局クエリセットも検証する必要に迫られるし、同じだと思うだけれども。 まぁ、何はともあれ、SQL直書き実行も出来るという事。

Python 入門 SQLは書かないのか?

イメージ
最近のWEBプログラミング言語書籍はSQLを書いていない物が多い。 きちんとしたMVC?を自分が携わっていないだけなのだろうか? が、Rubyの本もそうだったが、データベースからデータを取得する際にSQLで取っていなかった。 そう、VBやC#でいう所のLINQ的な取り方。 SQLをガリガリコードの中で書いている時代からプログラミングをしている自分にとっては激しく違和感がある。 むしろSQLをガリガリ書く方が違和感があるのだそうが・・・ とにかく、SQLで書かないSQL自動発行的な取り方は、SQLが最適化されていない事も多く、最初は気にならないが、やはり、データが増えるにつれて、遅くなるし不安定になる。 自分の時代では、インデックス設定して、それに見合ったSQLになるように調整して・・・だが・・・・ 今は、どういうSQLが発行されるのか、わざわざデバッグでトレースしないとわからないし、分かった所で、ライブラリの仕様的に調整が困難だったり、不可能だったり・・・ ・・・うーーん。 そして、Python。 これも同じだった。 自分はDjango(ジャンゴ)というフレームワークを選んで研究中なのだけれども・・・Rubyの時と同じく、クエリを発行するオブジェクトを使用してデータを取る。 data = Friend.objects.filter(name__in=list) これは、SQLでいう所の、 SELECT * FROM Friend  WHERE [name] in ('AAA','BBB',....)   のような事を意味している。 listには、リスト型で条件を入れている前提なのだが。 あぁ、何か今更思い出したけれど、以前二人の子にC#を薦めてたけれど・・・ Pythonの方が良いかもと今更は言えない・・・・ C#の方が個人的には良いとは思っているが、初心者の頃は作るので必死で気にならないけれど、作るのに慣れてくると、今度はライセンスが気になってくると思う。 そういうとき、Pythonは、ライセンスフリーだから、あまり悩まなくていい。 Pythonのコードエディターは、今はVisual Studio Codeを使うのだろうか? 自分は敢え