問題タブ [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.

0 投票する
8 に答える
35243 参照

python - sqlalchemyからcsvをダンプします

どういうわけか、データベース(sqlite3)からcsvファイルの形式でテーブルをダンプしたいと思います。私はデータベースを変更するために(sqlalchemyに基づく)elixirでPythonスクリプトを使用しています。使用しているテーブルをcsvにダンプする方法があるかどうか疑問に思いました。

sqlalchemyシリアライザーを見ことがありますが、それは私が望むものではないようです。私はそれを間違っていますか?sqlalchemyセッションを閉じた後にsqlite3pythonモジュールを呼び出して、代わりにファイルにダンプする必要がありますか?それとも自家製のものを使うべきですか?

0 投票する
1 に答える
834 参照

sql - SQLAlchemy & 複雑なクエリ

既存のアプリケーションに ACL を実装する必要があります。
そこで、データベースにusergroup、およびgroupmembersテーブルを追加しました。関連付けテーブルgroupmembersを介して、ユーザーグループ
の間の ManyToMany 関係を定義しました。アプリの一部のリソース (つまりitem ) を保護するために、追加の関連付けテーブルauth_itemsを追加しました。これは、グループ/ユーザーと特定のitemの間の ManyToMany 関係の関連付けテーブルとして使用する必要があります。

項目には次の列があります:

  • user_id --> ユーザー テーブル
  • group_id --> グループ テーブル
  • item_id --> アイテムテーブル

少なくともuser_id列とgroup_id列が設定されています。そのため、特定のアイテムへのグループまたはユーザーのアクセスを定義することができます。

AssociationProxy を使用して、ユーザー/グループとアイテムの間の関係を定義しました。

ユーザーがアクセスできるすべてのアイテムを表示したいのですが、それを行うのに本当に苦労しています。次の基準が使用されます。

  • ユーザーが所有するすべてのアイテムを表示する必要があります (item.owner_id = user.id)
  • すべての公開アイテムを表示する必要があります (item.access = public)
  • ユーザーがアクセスできるすべてのアイテムを表示する必要があります (auth_item.user_id = user.id)
  • ユーザーのグループがアクセスできるすべてのアイテムが表示されます。

最初の 3 つの基準は非常に単純ですが、4 番目の基準を実行するのは非常に困難です。

これが私のアプローチです:

3 番目の基準ではエラーが発生します。

これが良いアプローチであるかどうかは、実際にはわかりません。
多対多の関係をフィルタリングする際の最良のアプローチは何ですか?
別のリスト/関係に基づいて多対多の関係をフィルタリングするにはどうすればよいですか?

ところで、私は最新の sqlalchemy (6.0) と elixir バージョンを使用しています

洞察をありがとう。

0 投票する
1 に答える
182 参照

python - Elixir を使用して、挿入を実行する自己参照関係のテーブル オブジェクトを取得するにはどうすればよいですか?

SQLite で Elixir を使用しており、ドキュメントに従って複数の挿入を実行したいと考えています。

http://www.sqlalchemy.org/docs/05/sqlexpression.html#executing-multiple-statements

しかし、私の ManyToMany 関係は自己参照的であり、どこからinsert()オブジェクトを取得すればよいかわかりません。誰でも助けることができますか?

0 投票する
2 に答える
2064 参照

python - SQLAlchemyとElixir?

私はdjangoORMを使用していて、それは素晴らしくてとても簡単ですが、今回はデスクトップアプリを実行していて、SQLAlchemyを見つけましたが、Elixirで使用するかどうかはわかりません。どう思いますか?本当に便利ですか?

0 投票する
2 に答える
491 参照

python - エリクサーは時代遅れですか?

私のsqlalchemyは0.6.3で、elixirは0.7.1です

拡張するモデルクラスを作成しましたEntity

そして、ユーザーを次のように保存します。

報告するSession has no attribute 'save'

elixir のコードを調べたところ、 を呼び出していることがわかりましたが、そこにはメソッドがありsqlalchemy.org.session.Session#save()ません。save()

では、elixir時代遅れなので、もう使用すべきではないのでしょうか?

0 投票する
1 に答える
1038 参照

python - ManyToMany 中間テーブルの行の削除

ManyToMany 関係を持つ 2 つのテーブルがあります。時々、データベースを更新する必要があるので、両方のテーブルから要素を削除します。ただし、削除された行間の関係は、自動的に作成された中間テーブル内に保存されます。

問題を明確にするために、ここに小さなコードを示します。

sqlite データベースのダンプには以下が含まれるようになりました。

a1またはb1が削除されたときに「b_alist__a_blist」テーブルを空にしたいと思います。

これは、SQLite で常にサポートされているとは限らない ON DELETE ステートメントを使用せずに可能ですか?

Elixir で ManyToMany 関係を使用しているのは確かに私だけではないので、この問題の解決策はおそらく簡単です。

上記のコードは、sqlalchemy の警告を生成します。

sqlalchemy/orm/properties.py:842: SAWarning: B.alist では、single_parent が設定されていない場合、delete-orphan カスケードは多対多または多対 1 の関係でサポートされません。relationship() で single_parent=True を設定します。
self._determine_direction()

これは、この ManyToMany 関係にカスケード オプションをランダムに追加しようとしているからです。これは、delete-orphan が正しいオプションではないことを示しているはずです。

0 投票する
1 に答える
265 参照

python - Camelot アプリと非 Camelot アプリの間でモデルを共有する

異なるElixir / SQLAlchemyアプリケーション間でデータ モデルを共有したいと考えています。そのうちの 1 つはCamelot UI であり、他のアプリケーションは Web インターフェイスなどです。それらはすべて、同じ基礎となるデータベースに接続します。

私の知る限り、私のモデルで Camelot アプリを構築することfrom camelot import blahはできますが、Camelot がインストールされていない環境では実行できません。

それを行うための推奨される方法/ベストプラクティスがあるかどうかを知りたいです。もちろん、アイデアは私のモデルの単一のコードベースを維持し、異なるアプリ間で微妙な違いを複製しないことです (ここでは SA/Elixir からインポートし、そこには Camelot からインポートするなど)。

私のプロジェクトは現在、モデル/ python パッケージでレイアウトされています。

init .py は次のようになります。

python モジュール foo.py、bar.py などは実際にさまざまな部分を実装します。これらのモジュールはすべて、次のように始まります。

アイデアは、次のようなことをすることです:

それは実際には良い考えでしょうか、それとも私が見逃しているものがありますか? また、理想的には、そのような「環境の初期化」を のような中心的な場所でmodel/__init__.py行うのですが、インポートを基になるモジュールにどのように渡すのでしょうか?

0 投票する
1 に答える
353 参照

python - Elixirに新しいコラムを追加

MySQL データベースの ORM として Elixir を使用しています。スキーマに新しい列を追加したいと考えています。/ 元のデータを MySQL に保持し、スキーマを自動的に更新するにはどうすればよいですか? この概念は、Ruby on Rails では移行と呼ばれます。

0 投票する
3 に答える
3964 参照

python - Elixirを使用する利点は何ですか

... vs宣言型sqlalchemy?

0 投票する
3 に答える
587 参照

python - Python Elixir で更新ステートメントを作成する

MySQL データベースの ORM として Elixir を使用しています。更新ステートメントの作成に問題があります。たとえば、次のようになります。

これは私のエリクサーclseeです

これをどのように行う必要がありますか?