search
LoginSignup
0
Organization

MasoniteでチョットModel①(取得とか)

(Python素人が、)ひっそりとMasoniteして行こう、Model編。
今回は取得のみ。
※保存とか、Modelそのもののコーディングとかは別途書きたいなと。

Masonite ORM

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もあり

その他

joingroup by、集計関数なども問題なく使用できそうです。

終わりに

Modelとは関係ないですが、tinkerで値がさっくりと確認できないのは面倒ですね。

patinateのカスタマイズとかLaravelだと可能だったと思いますが、こちらでできるか気に少しなるところ。
ってか、Masoniteの学習で、Laravelの学習にもなっているような気がします。

※さて、これは次回も続くのか。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0