問題タブ [ponyorm]

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 投票する
1 に答える
15486 参照

python - Pony (ORM) はどのようにトリックを実行しますか?

Pony ORMは、ジェネレータ式を SQL に変換する優れたトリックを実行します。例:

Python には素晴らしいイントロスペクションとメタプログラミングが組み込まれていることは知っていますが、このライブラリはどのようにして前処理なしでジェネレータ式を変換できるのでしょうか? それは魔法のように見えます。

[アップデート]

ブレンダーは次のように書いています。

これがあなたが求めているファイルです。イントロスペクションの魔法を使ってジェネレーターを再構築しているようです。Python の構文を 100% サポートしているかどうかはわかりませんが、これはかなりクールです。– ブレンダー

彼らはジェネレータ式プロトコルの機能を調査していると思っていましたが、このファイルを見て、関連するastモジュールを見つけました...いいえ、彼らはその場でプログラム ソースを検査していませんよね? 驚くべき...

@BrenBarn: 関数呼び出しの外でジェネレーターを呼び出そうとするとselect、結果は次のようになります。

select彼らは、関数呼び出しを検査したり、Python 抽象構文文法ツリーをその場で処理したりするなど、より難解な呪文を実行しているようです。

私はまだ誰かがそれを説明してくれるのを見たいと思っています.ソースは私の魔法のレベルをはるかに超えています.

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

python - Pony ORM は、レコードが「現在のトランザクションの外部で更新されました」と報告しますが、他のトランザクションはありません。

コードは次のように非常に単純です。

pony.orm レポートの例外: pony.orm.core.CommitException: オブジェクト TryUpdate[1] が現在のトランザクションの外部で更新されました。しかし、他のトランザクションはまったく実行されていません

そして、私の実験が示すように、ポニーは tt が元の値と異なる値に変更されている限り問題なく動作しますが、tt が元の値と等しい値に設定されている場合は常に例外を報告します。

これが設計上の決定かどうかはわかりません。割り当ての前に入力値が毎回変更されるかどうかを確認する必要がありますか? または、この迷惑な例外を回避するためにできることはありますか?

私のポニーのバージョン: 0.4.8

どうもありがとう~~~

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

python - Pony ORMを使用してデータベースオブジェクトを反映するには?

PonyORMを使用して反映したい既存の MySQL データベースがあります。

私はSQLAlchemyでそれを行うことができることを知っています:

PonyORM で同じことを行う同様の方法はありますか? ウェブサイトでそれに関する情報を見つけることができませんでした。

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

python - ponyorm が生成する SQL を確認するにはどうすればよいですか?

この例では:

他の ORM で同様のクエリに対して生成される SQL を確認したいので、デバッグ目的でこれが必要です。

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

python - 計算/派生フィールドは Pony ORM で完全にサポートされていますか?

Pony ORMに次のスキーマがあるとします。

Personエンティティに次のようなsalary属性を持たせたい:

私が最初に考えたのは、次のように Person エンティティにプロパティを追加することでした。

これは単純なクエリで機能します。

版画:

しかし、私がこのようなことをしようとすると:

当然のことかもしれませんが、次のようになります。

salaryは「実際の」属性ではないためです。計算されたフィールドを、通常の集計/計算を実行できるファーストクラスのエンティティとして処理できるようにする方法はありますか?