2017-01-23 7 views
0

外部プログラムによって生成されたデータを処理する必要があるため、ビデオゲームの戦闘データに関する既存のスキーマを使用しています。このスキーマは、データの整理方法と技術的には互換性がありませんが、主に機能します。SqlAlchemyでデータを集計してエンティティを作成する

3つの問題(これまでのところ)は、閲覧可能なデータをブラウズ/検索して利用可能なデータを拾い読みするための大きなデータテーブルをユーザーに提供しています。だから、私はデータテーブルを生成し、そのテーブルへのより多くのデータのAJAX要求を処理する単一の一般的な方法を持っていることに決めました。

これらのケースの1つは基本的にはテーブルから直接データを取得し、もう1つは実際にテーブルから要約データを取得しているという問題があります。たとえば、スキーマは「戦闘員」または戦闘の参加者を定義しますが、システムに「キャラクタ」の概念を公開したり、存在して多くの戦闘に参加したりすることを望みます。したがって、Characterは、Combatantが複数で、異なるEncounterです。

データベースから文字のアイデアを作成するには、基本的に2通りの方法があります。私はビューを使用するか、ORM(SQLAlchemy)に必要なクエリを毎回ゼロから作成させることができます。私は要約しているので、私は主キーを失うので、ビューを表すORMクラスを作成することはできません。おそらく、列を主キーにすることはできますが、それは私のためには機能しませんでした(何もしなかったようです)。私が最初からクエリを使用しようとすると、現在の一般的なテーブルの生成方法では、クエリ結果を調べることができなくなってしまいます。

だから、私は2つの質問、およびクエリからスクラッチのアプローチのためのa MCVE持っている:私は悪いことが知られて、この問題へのアプローチを取ってい

  1. を?

  2. 任意の文字列を使用してクエリ結果オブジェクトから値を取得できるinspect(...)の使用を避ける方法はありますか?

MCVEに関するいくつかの注意事項:

  • 私はORMのオブジェクトの数、それぞれの列、列リストの設定情報をストリップダウンしました。列リストは元の形では醜いです。

  • ダブルネストされたforループがMCVEにある場合、実際のコードにはテンプレートシステムがあります。 HTMLを生成するWebサーバー、いつもの楽しみはSQLAlchemyに焦点を当てて取り除かれました。

答えて

0

this code for Materialized Viewsを使用してこれを解決しました。したがって、すべての集約はDBによって行われ、SQLAlchemyはビューを別の選択可能なものとして扱います。

関連する問題