SQL コードを Python オブジェクトに取り込んで、データ モデルが提供する特別なメソッドをさらに使用することを考えています。ここに私の考えがあります。あなたの意見は何ですか?どのようにしますか?
いくつかのテーブルを定義しましょう
table users
id: int
username: string
group_id: int
table groups
id: int
name: string
table values:
id: int
value_type_id: int
value: string
user_id: int
table value_types:
id: int
name: int
そして、Python に User、Group、Value、ValueType という名前の適切なクラスがあるとしましょう。
特定のユーザーがすべての値を取得するには、次のように記述します。
values = Value.db
values.user.id == request["user_id"]
または外部キーが指定されていない場合
values.user_id == request["user_id"]
データベースから値を取得するには、他のみんなと同じように繰り返します。
for value in values:
-> select * from values where user_id = ?
すべての列が必要ない場合は、反復の前に次のように列を指定します。
for value in values >> (values.value_type_id):
-> select value_type_id from values where user_id = ?"
しかし、上記のフォーメーションはやり過ぎで複雑すぎるのかもしれません。たぶん、次のようなもっと単純なものを使用する必要があります。
for value in values.fields(values.value_type_id):
-> select value_type_id from values where user_id = ?"
返されたすべての値とともに ValueType オブジェクトも取得したい場合は、次のようにします。
values_types = Values.db
for (value_type, value) in (value_types + values):
-> select * from value_types join values ...
外部キーを持たない結合を追加するには、このように結合条件を個別に指定する必要があります
groups = Group.db
values.user.group_id == groups.id
for (value, group) in (values + groups):
-> select users.*,groups.* from values join users join groups
比較部分は簡単です。<、<=、>、>=、==、in を簡単にエミュレートできます。これらすべての比較関数は、db マネージャーの SQL 条件を変更します。
グループ化には、このような分割を使用することを考えています。何を使いますか?
for value in values.fields(values.value_type_id) / values.value_type_id:
-> select value_type_id from values groupd by value_type_id
左結合の場合は、+= を使用します。
for (value, group) in (values += groups):
-> select users.*,groups.* from values join users left join groups
私が今考えているのは、ordering、having、distinct を実装する方法です。まだわかりません。多分あなたは助けることができますか?
ええと、これらは私の最初の生の考えでした。あなたの考えは大歓迎です。どのようにしますか?あなたならどうしますか?