postgresql + python: как адаптировать для copy_from? - PullRequest
1 голос
/ 04 ноября 2011

Какую функцию я могу использовать для адаптации значений для подходящего использования в операторе COPY FROM? Я попробовал эту adapt функцию:

from psycopg2.extensions import adapt

Однако, это неправильно для datetime (добавляет ::timestsamp к строке, postgres это не нравится) и string (заключает их в одинарные кавычки, например, пустая строка '', где, похоже, кавычек не должно использоваться).

1 Ответ

1 голос
/ 04 ноября 2011

Вы не должны просто использовать adapt с copy_from.

copy_from ожидает формат, отличный от цитирования SQL.

Для строк я бы предложил написать собственную функцию copy_adapt, которая должна экранировать вкладки с \t, CR с \r и LF с \n.

Значения для столбцов timestamp / date должны быть отформатированы (с strftime?) Как строка, которую вы видите, когда вы SELECT now() в Postgres.

Элементы кортежа должны быть разделены табуляторами, а весь кортеж должен заканчиваться символом новой строки.

...