問題タブ [asyncpg]
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 - Python Gino でのプール接続の取得 (非同期)
asyncio
+ asyncpg
+ gino
(ORM 風) + aiohttp
(ルーティング、Web 応答)で Postgres、Python3.7 を使用しています。
users
データベースに小さな postgres テーブルを作成しtestdb
、単一の行を挿入しました。
リクエストが入ったときにルート内でORMを利用できるようにデータベースをセットアップしようとしています.
出力は次のとおりです。
これは奇妙です。「明示的な」コードは、基本的SELECT
にデータベースに対して実行されますが、これは役に立ちません。
ドキュメントには、1) ORM を使用する方法と、2) プールからの接続を明示的にチェックアウトする方法が見つかりません。
私が持っている質問:
await User.query.gino.all()
プールから接続をチェックアウトしますか? どのようにリリースされますか?- クエリをトランザクションでラップするにはどうすればよいですか? プールから接続をいつ/どこで取得し、どのように解放するかを明示的に制御できないことに不安を感じています。
私は基本的に、test_engine_explicit()
Gino で動作するスタイルの明示性を望んでいますが、Gino ORM がどのように機能するかを理解していないだけかもしれません。
psql - psql blukは、長さが異なる配列列を挿入します
unnest
配列データがない場合は正常に動作します。配列列を一括挿入したい。次のような私の入力:[[1, 2], [1]]
失敗したエラーは次のとおりです。
unnest_2d_1d
そのよう
な関数はすべて異なる長さの配列をサポートできませんが、配列を 1 レベルずつアンネストします。
別の同じエラーが array_dims で発生しました:
unnest_2d_1d
失敗したものを成功にするために何をする必要がありますか?
なぜ私はunnestをしなければならないのですか。asyncpg
execute_many
戻り値を破棄するためです。したがって、データを挿入するには1つのSQLを使用する必要があります。しかし、配列の列は、長さが異なる 1 つの次元のようなものです。
---- いくつかの python と asyncpg を追加します
この問題に関連する github の問題を見つけました 。https ://github.com/brianc/node-postgres/issues/1644
これを試すとき:
これを得ました
python - sqlalchemy で定義されたテーブルから CREATE クエリ文字列を取得する
asyncpg を使用して接続するデータベースを持つ非同期 Python アプリケーションがあり、すべてのクエリを手動で入力することを避けたいと考えています。sqlalchemy コアが非常に役立つことがわかりましたが、1 つのことに苦労しています。アプリケーションが既に作成されていることに依存するのではなく、起動時にデータベーススキーマを作成できるようにしたいのですが、そうする自動方法が見つかりません。私が欲しいのは次のようなものです:
ここでの問題は、sqlalchemymetadata
がエンジンにバインドされることを期待しているが、非同期エンジンをサポートしていないことです。したがって、宣言されたテーブルから CREATE クエリ文字列を取得し、それを接続に渡して実行したいだけです。
これの類推はpeople.select()
、すぐには実行されないかもしれません。実行されるクエリである文字列表現も持つオブジェクトを作成するだけです。
SQL スキーマを別のファイルに格納して起動時にロードすることはできますが、スキーマを変更するたびにコード内の 2 か所で変更する必要があるため、適切ではありません。助言がありますか?