Используйте psycopg2 для построения запросов без подключения
У меня есть несколько случаев, когда я хочу собирать данные в полевых условиях. Это в ситуациях, когда у меня не всегда есть доступ к моей базе данных postgres.
Чтобы синхронизировать ситуацию, было бы хорошо, если бы я мог использовать функции psycopg2 в автономном режиме для генерации запросов, которые можно было бы задержать, и как только я смогу подключиться к базе данных; обрабатывать все, что сдерживается.
Одна вещь, с которой я сейчас борюсь, состоит в том, что курсор psycopg2 требует создания соединения.
Мой вопрос:
Есть ли способ использовать курсор, чтобы сделать такие вещи, как mogrify без активного объекта подключения? Или с объектом подключения, который не связан с базой данных? Затем я хотел бы временно записать результаты mogrify в файл, чтобы их можно было обработать позже.
2 ответа
Кажется, что было бы проще и более универсально хранить данные, которые будут вставлены позже, в другую структуру. Возможно файл CSV. Затем, когда вы подключаетесь, вы можете пробежаться по этой таблице, но вы также можете легко делать другие вещи с этим CSV, если это необходимо.
Это был бы хрупкий подход, так как соединение используется для обнаружения некоторых параметров, используемых для экранирования (кодирование, строка, соответствующая стандарту и т. Д.).
Вы можете иметь "ручной mogrify" вызов psycopg2.extensions.adapt(x).getquoted()
на ваши параметры, а затем объединить их с запросом, используя обычный Python %
оператор.
Выпущенные в настоящий момент версии psycopg (до 2.3.2) могут не работать None
-> NULL
преобразование хотя. Вы можете либо преобразовать эти значения вручную, либо зарегистрировать адаптер для None: вы можете увидеть, как в этом коммите.