12

現場でデータを収集したいことが何度かあります。これは、postgresデータベースに常にアクセスできるとは限らない状況です。

同期を保つために、psycopg2関数をオフラインで使用して、抑制できるクエリを生成し、データベースに接続できるようになったら、それは素晴らしいことです。抑制されているすべてを処理します。

私が現在苦労していることの1つは、psycopg2カーソルが接続を構築する必要があるということです。

私の質問は:

カーソルを使用して、アクティブな接続オブジェクトなしでmogrifyなどを実行する方法はありますか?または、データベースに接続されていない接続オブジェクトを使用しますか?次に、mogrifyの結果を一時的にファイルに書き込んで、後で処理できるようにします。

4

2 に答える 2

15

接続はエスケープに使用されるいくつかのパラメーター(エンコード、標準準拠の文字列など)を検出するために使用されるため、これは脆弱なアプローチになります。

パラメータを「手動で移動」psycopg2.extensions.adapt(x).getquoted()してから、通常のPython%演算子を使用してそれらをクエリにマージすることができます。

ただし、現在リリースされているpsycopgバージョン(最大2.3.2)は、None->NULL変換で失敗する可能性があります。これらの値を手動で変換するか、アダプターを「なし」に登録することができます。このコミットでその方法を確認できます。

于 2011-02-03T12:26:09.693 に答える
0

後で別の構造に挿入するデータを保存する方が簡単で用途が広いようです。おそらくcsvファイルです。次に、接続すると、そのテーブルを実行できますが、必要に応じて、そのCSVを使用して他のことを簡単に行うこともできます。

于 2011-02-02T23:03:32.053 に答える