問題タブ [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 - sqlalchemyからcsvをダンプします
どういうわけか、データベース(sqlite3)からcsvファイルの形式でテーブルをダンプしたいと思います。私はデータベースを変更するために(sqlalchemyに基づく)elixirでPythonスクリプトを使用しています。使用しているテーブルをcsvにダンプする方法があるかどうか疑問に思いました。
sqlalchemyシリアライザーを見たことがありますが、それは私が望むものではないようです。私はそれを間違っていますか?sqlalchemyセッションを閉じた後にsqlite3pythonモジュールを呼び出して、代わりにファイルにダンプする必要がありますか?それとも自家製のものを使うべきですか?
sql - SQLAlchemy & 複雑なクエリ
既存のアプリケーションに ACL を実装する必要があります。
そこで、データベースにuser、group、および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 バージョンを使用しています
洞察をありがとう。
python - Elixir を使用して、挿入を実行する自己参照関係のテーブル オブジェクトを取得するにはどうすればよいですか?
SQLite で Elixir を使用しており、ドキュメントに従って複数の挿入を実行したいと考えています。
http://www.sqlalchemy.org/docs/05/sqlexpression.html#executing-multiple-statements
しかし、私の ManyToMany 関係は自己参照的であり、どこからinsert()
オブジェクトを取得すればよいかわかりません。誰でも助けることができますか?
python - SQLAlchemyとElixir?
私はdjangoORMを使用していて、それは素晴らしくてとても簡単ですが、今回はデスクトップアプリを実行していて、SQLAlchemyを見つけましたが、Elixirで使用するかどうかはわかりません。どう思いますか?本当に便利ですか?
python - エリクサーは時代遅れですか?
私のsqlalchemyは0.6.3で、elixirは0.7.1です
拡張するモデルクラスを作成しましたEntity
:
そして、ユーザーを次のように保存します。
報告するSession has no attribute 'save'
elixir のコードを調べたところ、 を呼び出していることがわかりましたが、そこにはメソッドがありsqlalchemy.org.session.Session#save()
ません。save()
では、elixir
時代遅れなので、もう使用すべきではないのでしょうか?
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 が正しいオプションではないことを示しているはずです。
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
行うのですが、インポートを基になるモジュールにどのように渡すのでしょうか?
python - Elixirに新しいコラムを追加
MySQL データベースの ORM として Elixir を使用しています。スキーマに新しい列を追加したいと考えています。/ 元のデータを MySQL に保持し、スキーマを自動的に更新するにはどうすればよいですか? この概念は、Ruby on Rails では移行と呼ばれます。
python - Elixirを使用する利点は何ですか
... vs宣言型sqlalchemy?
python - Python Elixir で更新ステートメントを作成する
MySQL データベースの ORM として Elixir を使用しています。更新ステートメントの作成に問題があります。たとえば、次のようになります。
これは私のエリクサーclseeです
これをどのように行う必要がありますか?