現状
データベースのモデル定義をpydanticのBaseModelというクラスを継承して作成しています。
設計上100個ほどのフィールドが必要ですが、定義をどのようにすれば良いのかわかりません。
現在は、下記のような一般的なコードから
python
1from pydantic import BaseModel 2 3class UserInfo(BaseModel): 4 id: int 5 date_time: str 6 no_1: str 7 no_2: str 8 no_3: str 9 no_4: str 10 no_5: str 11 : 12 : 13 no_99: str 14 no_100: str
としています。
実現したいこと
1000個のフィールドになると定義だけで手間がかかりすぎてしまいます。
あらかじめListでフィール名を読み込んで、モデル定義するにはどのようにすれば良いでしょうか?
> 1000個のフィールドになると定義だけで手間がかかりすぎてしまいます。
> あらかじめListでフィール名を読み込んで
1000個のフィールドの定義と、Listで定義することの違いが分かりません。
(というか、むしろより面倒になるのでは? としか思えません)
「あらかじめListでフィール名を読み込んで」で何をしようとしているのか具体的に想像がつくように書く必要があると思います。
もしかして、「no_1」が"てきとうな例示"なのではなくて、本当にこんな名前を付けているということですか? であれば質問として理解できます。
はい、「no_1」から「no_100」までセンサーデータの番号です。
500,1000個のフィードになった場合、何とか手間なくフィールドを定義できないものかと考えています。
「データベース設計」の質問ですよね?
テーブル定義どうなってるのでしょうか。
場合によってはテーブル正規化が先のように思います。
10分ごとに100個のセンサーからデータが送られています。
そのデータをすべてデータベースの入れてる必要があります。
それぞれのセンサーに関係性はありませんので、正規化する必要なないと考えています。
これは「正規化しない」という選択をしたことが「定義だけで手間がかかりすぎる」という問題を生んだ、正規化しないことのデメリットが顕在化した典型例だと思います。
正規化する必要はないと考えていらっしゃるようですが、「定義だけで手間がかかりすぎる」のは正規化していないせいです。
その上で、「正規化するのではなくて("運用で回避"的なやり方で)定義を簡略化する手段はないか」という内容の質問と捉えています。
(質問は理解しましたが直截の回答はないのでコメントで失礼します)
正規化必要ないのでしたらデータベース設計無関係で実装レベルの話なので質問タグを外していただきたく。
こちらはあくまで「正規化することで実装も楽になる可能性」を模索しようとしておりましたので。
たしかにそれはそのとおりで紛らわしいですね > タグの件
誤解を受けるようなタグを付けてしまったようです。
タグを削除しました。
