Используйте psycopg2 для построения запросов без подключения - PullRequest
5 голосов
/ 03 февраля 2011

У меня есть несколько случаев, когда я хочу собирать данные в полевых условиях.Это в ситуациях, когда у меня не всегда есть доступ к моей базе данных postgres.

Для синхронизации данных было бы хорошо, если бы я мог использовать функции psycopg2 в автономном режиме для генерации запросов, которые могут быть задержаны, и как только ямогу подключиться к базе данных;обрабатывать все, что удерживается.

Одна вещь, с которой я в настоящее время борюсь, состоит в том, что курсор psycopg2 требует создания соединения.

Мой вопрос:

Есть лиспособ использовать курсор, чтобы сделать такие вещи, как mogrify без активного объекта подключения?Или с объектом подключения, который не связан с базой данных?Затем я хотел бы временно записать результаты mogrify в файл, чтобы их можно было обработать позже.

Ответы [ 2 ]

11 голосов
/ 03 февраля 2011

Это был бы хрупкий подход, так как соединение используется для обнаружения некоторых параметров, используемых для экранирования (кодирование, строка, соответствующая стандарту и т. Д.).

Вы можете использовать «ручную проверку», вызывая psycopg2.extensions.adapt(x).getquoted()с вашими параметрами, а затем объединить их с запросом с помощью обычного оператора Python %.

В настоящее время выпущенные версии psycopg (до 2.3.2) могут не работать при преобразовании None -> NULL.Вы можете либо преобразовать эти значения вручную, либо зарегистрировать адаптер для None: вы можете увидеть, как в этот коммит .

0 голосов
/ 03 февраля 2011

Кажется, что было бы проще и более универсально хранить данные для последующей вставки в другую структуру. Возможно файл CSV. Затем, когда вы подключитесь, вы сможете пробежаться по этой таблице, но вы также можете легко делать другие вещи с этим CSV при необходимости.

...