Django: RunSQL: Verwenden Sie den POSGRESQL COPY-Befehl

8

Ich versuche eine Migration mit dem folgenden RunSQL -Befehl auszuführen:

%Vor%

Es scheitert so:

%Vor%

Ist COPY in RunSQL nicht erlaubt?

Wir verwenden psycopg2

    
guettli 07.08.2015, 10:38
quelle

1 Antwort

3

Der psycopg2 -Treiber macht die Methoden copy_to und copy_from verfügbar, mit denen dasselbe Verhalten wie mit dem psql -Client implementiert werden kann. Der Schlüssel besteht darin, die Operation RunPython anstelle der Operation RunSQL zu verwenden.

Sie benötigen:

  • Eine Funktion in Ihrer Migration, um Ihre Datei zu öffnen und mit den Kopiermethoden zu interagieren
  • Eine RunPython -Operation in der operations -Liste Ihrer Migration, um die Funktion
  • aufzurufen

Beispiel mit Django 1.8.4, Python 2.7.10, psycopg2 2.6.1 -

%Vor%

Einige Anmerkungen:

  • Das Objekt file , das an copy übergeben wurde, ist im Wesentlichen STDIN in der Anweisung.
  • Der Kopierbefehl kann wählerisch bei Spalten sein; Mit copy_expert können Sie alle Optionen des Befehls steuern: format, headers, delimiter, etc.

Weitere Informationen zu den copy_* -Methoden finden Sie in der Dokumentation zu psycopg2: Ссылка

    
bimsapi 19.08.2015, 03:42
quelle