私は(PostgreSQLのとの組み合わせ)のpythonでのORMとしてピーウィーを使用していますが、私は自己参照(親子)ピーウィーは、すべての子孫
とテーブルのうち、指定されたidのすべての子孫を照会しようとしていますを取得しますこれを達成する最良の方法は何ですか?
編集:
私はすでにセットアップピーウィーモデルクラス:
class Customer(BaseModel):
customerid = PrimaryKeyField()
name = CharField(null=False)
parentid = ForeignKeyField(db_column='parentid',
null=True,
rel_model='self', to_field='customerid')
customer_type_customertypeid = ForeignKeyField(
db_column='customer_type_customertypeid',
null=False,
rel_model=CustomerType, to_field='customertypeid')
class Meta:
db_table = 'customer'
今、私はidで与えられた顧客のすべての子を照会し、dictの
C1 = dbhandler.Customer.alias()
try:
return [model_to_dict(model) for model in
C1.select().where(...)]
except:
return {}
にそれを変換したいです
しかし、私はCTEを使用せずにこれを達成するクエリを考えることはできません。しかし、ピーニーはCTEのサポートを持っていないので、私はアイデアがありません。 私はpeeweeが実際のSQLクエリを入れることができる.raw(..)関数を持っていることを知りましたが、それはORMを使う利点を破壊するだけです。
最良の方法は、私たちにこれをコード化するように求めるのではなく、そのドキュメントと「はじめに」を参照することです。私は決してあなたを怒らせようとしているわけではありません。ユーザーが何も試していない、または試したことを私たちに示すことができないところで、これらのことが頻繁にポップアップするだけです。つまり、ソリューション全体をコード化する以外は、実際のコードはありません(これは、あなたが私たちに求めているとは思わないかもしれませんが、あなたが私たちに求めているものです)。これを解決しようと努力してみてください。[最小限の動作例](http://stackoverflow.com/help/mcve)。ようこそ! – Torxed
@Torxed私はいくつかの実際のコードを追加しました – TimoTJ
はるかに良い、近い投票が後退しました。これは、Peeweeをよりよく理解している人が(新しい傾向であると思われる)誰かが助けてくれる、正当で良い質問のようです。運が良かった! – Torxed