0
0

More than 1 year has passed since last update.

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

Posted at

(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の学習にもなっているような気がします。

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

0
0
0

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
  3. You can use dark theme
What you can do with signing up
0
0