(Python素人が、)ひっそりとMasoniteして行こう、Model編。
今回は取得のみ。
※保存とか、Modelそのもののコーディングとかは別途書きたいなと。
DB周りを使用する場合、別途Masonite ORM
のインストールが必要かと思います。
pip install pip install masonite-orm
バージョン
Python 3.10.4
Masonite version 4.14.1
masonite-orm 2.11.10
取得
今回は簡単なものだけを記載しました。
いつかもっと充実できたら…
Laravelユーザみんな大好きtinker
も勿論ありました。
python craft tinker
取得の確認とかはこちらを使うと便利。
ただ、取得した全値の確認とかはto_json()
をしないとダメかもしれません。
クエリビルダの使用もできる様です。
また、to_sql()
でクエリ確認ができます。
from masoniteorm.query import QueryBuilder
query = QueryBuilder().table("users")
query.to_sql()
# => 'SELECT * FROM `users`'
Select, SelectRaw
User.select("email").get()
User.select("name AS user_name").get()
User.select_raw("COUNT(name) AS user_count").get()
All, Get
Collectionが取得されます。
今回は確認しませんが、Collectionでのwhereとかも可能な様です。
User.all()
User.get()
# ちょっと違うけど
User.paginate(10)
First
対象のModelが取得できます。
User.find(1)
User.first()
FindOrFail()
と同様ものもあります。
User.find_or_404(0)
# masoniteorm.exceptions.HTTP404
User.find_or_fail(0)
User.where("id", 0).first_or_fail()
# masoniteorm.exceptions.ModelNotFound
Where
Where系のは色々あるので、よく使いそうなものを。
User.where("id", 1).get()
User.where({"name": "Hoge", "age": 1}).get()
User.where("age", ">", 18).get()
User.where_null("email").get() # where_not_null()もあり
User.where_in("age", [1, 2, 3]).get() # where_not_inもあり
User.where_like("email", "%example.com").get # where_not_likeもあり
その他
join
やgroup by
、集計関数なども問題なく使用できそうです。
終わりに
Modelとは関係ないですが、tinker
で値がさっくりと確認できないのは面倒ですね。
patinate
のカスタマイズとかLaravelだと可能だったと思いますが、こちらでできるか気に少しなるところ。
ってか、Masoniteの学習で、Laravelの学習にもなっているような気がします。
※さて、これは次回も続くのか。