問題タブ [python-elixir]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Elixir と SQL alchemy で Flask を使用する
FlaskでElixirを使用しようとしています。SQL Alchemy を直接使用しているため、多対多の関係でのデータ挿入について混乱しています。モデル ファイルを作成し、必要なテーブルを生成しました。
SQl 錬金術の場合、次のようにフラスコから呼び出します。
Elixirで同じことをする方法は? Entity に get_or_init のモデル メソッドがあるので、それも使用しようとしています。
SQLAlchemy 自体を使用しようとすると (elixir は単なるラッパーであるため)、次のようになります。
python - Python CamelotはElixirに関連付けられていますか?
キャメロットのドキュメントには、エリクサーモデルを使用していると書かれています。SQLAlchemyにはしばらくの間declarative_baseが含まれていたので、別のアプリではElixirの代わりにそれを使用していました。ここで、SQLAlchemy/宣言型モデルをCamelotで直接使用したいと思います。
Stackoverflowには、CamelotがElixirに関連付けられておらず、さまざまなモデルを使用できる可能性があるという投稿がありますが、その方法については説明されていません。
キャメロットのオリジナルmodel.py
には、次のコンテンツのみが含まれています。
SQLAlchemyモデルを追加し、次のように変更model.py
しました。
うまくいきませんでした。起動するmain.py
と、GUIとTest
サイドバーは表示されますが、行は表示されません。これは、トレースバックの末尾です。
これはelixir_admin.py
46-52行目のコードです。
このコードが問題の原因である場合、メソッドを上書きしてデフォルトのクエリを変更して機能させるにはどうすればよいですか?
CamelotでSQLAlchemy/宣言型モデルをどのように使用できますか?
sql - 既存のデータベースでのリレーションシップのための SQLAlchemy/Elixir 構文
接続文字列を介して接続された既存の MySQL データベースのテーブルを表す Elixir を使用して Python モデルを構築しようとしていmysql+pyodbc
ます。Elixir は列構造を問題なく反映しますが、関係を反映することはできないようです。そのため、指定しようとしています。私は、宣言形式と DSL 形式の両方で、構文に非常に苦労しています。
例として、次の SQL ステートメントで作成された 2 つのテーブル (1 対 1) にまたがる外部キー関係があります。
両方のテーブルで、person_id
が主キーです。ドキュメントを読んだ後の私の感覚 (残念ながら、自動作成されたデータベースに重点を置いており、既存のデータベースへの接続にはあまり重点を置いていません) は、制約名/インデックスがおそらく問題であるということです。
or関係を使用して最初の制約をモデル化し、OneToOne
or関係を 2 番目の制約に使用しようとしています。私が試したそれぞれのケースで、キーワード引数を使用するための指示を含むエラーが発生しましたが、これも役に立ちませんでした.has_one
ManyToOne
belongs_to
primaryjoin
関連して、次の SQL コードを使用してデータベースで定義されたOneToMany
orリレーションシップで同様の状況が発生しました。has_many
ここでperson_id
は、テーブルの主キーですが、person
テーブルの主キーではありませんperson_by_age
。この制約により、Elixir では上記と同様のエラーが発生します。
誰もこれを以前にやったことがありますか?これらの関係を指定して、データベースに既に存在する既存の外部キー制約とインデックスを使用するにはどうすればよいですか?
どんな助けでも大歓迎です!
python - SQLAlchemy宣言型拡張とエリクサー
私は自分のプロジェクトの1つでSQLAlchemyを使用することを計画しており、テーブルの宣言型構文に非常に興味があります。
そのためにElixirDeclarativeLayerを使用するように言われましたが、同時にSQLAlchemyには組み込みの宣言型拡張機能があります。
Elixirと宣言型拡張の現在の違いは何ですか?長所/短所?
python - 具体的な継承を持つ基本エンティティ
deleted
削除されたレコードをマークするフィールドを持つ基本エンティティが必要です。そして、私には2つのサブクラスがあり、それぞれに独自の列を持つ独自のテーブルがあります:
そして結果:
質問:
基本エンティティのテーブルの作成を回避するにはどうすればよいですか?- 解決済み:using_options(abstract = True)
-これで解決しました-中に入れるのを忘れていましたdeleted
作成されたテーブルにフィールドがないのはなぜですか?Field
- 各サブクラスに入力することは避けたいのです
using_options(inheritance='concrete')
が、それでも「具体的な継承」があります。すべてのサブクラスのデフォルトにする方法はありますか?
python - SQLAlchemy と Elixir を使用した MySQL 識別子 (テーブル名、列名) の長さ制限
Elixir で SQLAlchemy を使用していますが、SQLite を使用するとすべて正常に動作します。ただし、MySQL に切り替えると、テーブル名とカラム名の長さ制限 (64 文字) があります。いくつかの ManyToMany 関係を持つエンティティが非常に多くMyFirstEntity_rel_otherEntities__MySecondEntity_rel_theFirstEntities
、自動化された方法のように結果の長いテーブル名をクランプする方法が見つかりませんでした。
クラスとリレーション名によっては、ManyToOne リレーションシップの外部キー列名が長すぎます。create_engine("...", label_length = 64)
トリックを実行しなかっshortcolumns = True
たため、Python モジュール名全体をプレフィックスとして使用することを回避するために既に使用しています。
私が見る唯一の方法は、スキーマ全体を調べて、tablename (ManyToMany 関係の場合) と columnname (ManyToOne 関係の場合) を手動で定義することです。他のオプションはありますか?
properties - 追加のプロパティで elixir/sqlalchemy フィールド/列にタグを付けることは可能ですか?
エンティティのいくつかの列を検索可能としてマークしたいと思います。理想的には、列ごとにクリーンな方法で。「タグ付け」したり、クラスの列定義にプロパティを追加したりすることはできますか? コードの他の場所では、具体的にどのクラスであるかを知らなくても、任意のエンティティで検索可能な列を取得できるようにしたいと考えています。
例えば:
明らかに上記の例は機能しませんが、これを行う方法はありますか? 私はこの分野の専門家ではありません。数日間の検索/ドキュメント トロールでは、何の役にも立ちませんでした。
python - UnitTest:多対多の関係を追加できません:整合性エラー(削除は彼の仕事をしていないようです)
個人とチームの2つのテーブルがあります。それぞれが他と多対多の関係にあります。
関数でこれを行います(テストの各関数の前に、私の場合は3回setUp
呼び出されます)
そして私の機能(テストの各機能の後にtearDown
呼び出されます)
最初のテストはパスしますがsetUp
、2 回目に が呼び出されると、次のようになりました。
IntegrityError: (IntegrityError) columns person_id, team_id are not unique u'INSERT INTO team_persons__person_teams (person_id, team_id) VALUES (?, ?)' (5, 1)
delete が最初に行を実際に削除しなかったようです。なぜこれが起こるのか分かりません。
python - Elixir でジェネレーティブ検索を作成する
Elixir の使用に行き詰まっており、現在、改善したいデータベースを検索する方法が非常に面倒です。ドキュメンテーションは、基本的なジェネレーティブ検索を行う方法についての洞察を提供しますが、私は多くの異なるクラスをステップ実行する必要があり、自分でリストをスキャンするよりも Elixir を使用したいと考えています。
次に例を示します。
この例では、次のすべての学生を見つけたいと考えています。
- 2008年以降に登録
- カリフォルニア出身です
- 「テレビゲーム」を趣味にする
私が行く方法があるはずだと思っています:
現在、それらをリストに入れてセットを探しています。
python - Elixirを初期化できません
私はElixirとSQLAlchemyから始めています。Mysqlデータベースに接続するPythonファイルを作成しましたが、Pythonで実行するとすぐに、次のエラーが発生します。
私はそれを探していましたが、理由がわかりません。これはyonki.pyファイルです:
必要なモジュールがインストールされていないことが原因かもしれませんが、どれかわかりません。