Минимальная программа Python для загрузки данных в Postgres с использованием psygopg3 COPY не выполняет операцию COPY.Python

Программы на Python
Ответить
Anonymous
 Минимальная программа Python для загрузки данных в Postgres с использованием psygopg3 COPY не выполняет операцию COPY.

Сообщение Anonymous »

Я написал минимальный тестовый пример, чтобы попытаться отладить некоторую проблему, с которой я столкнулся, когда COPY ничего не делает при копировании данных в базу данных Postgres.
Это мой код Python:

Код: Выделить всё

postgres_connection_string = 'user=postgres password=example host=192.168.x.y dbname=postgres port=5432'

import pandas
df = pandas.read_csv('test_file.csv', header=None)
import psycopg
import io
file = io.StringIO()
df.to_csv(file, index=False, header=False)
file.seek(0)
columns = '(string_column, int_column)'
with psycopg.connect(postgres_connection_string) as conn:
with conn.cursor() as cur:
cur.copy(f'COPY example_schema.test_table {columns} FROM STDIN WITH (FORMAT csv)', file)
conn.commit()
Содержимое test_file.csv:

Код: Выделить всё

$ cat test_file.csv
hello world,1
goodbye world,2
DDL для таблицы Postgres:

Код: Выделить всё

CREATE TABLE example_schema.test_table (
test_table_id serial4 NOT NULL,
string_column varchar NOT NULL,
int_column int4 NOT NULL,
CONSTRAINT test_table_pkey PRIMARY KEY (test_table_id)
);
Когда я запускаю это, оно завершается без ошибок, однако данные в базу данных postgres не загружаются.
Для «реальной» программы количество загружаемых данных велико. (Несколько гигабайт.) Однако последний блок, содержащий cur.copy, завершается гораздо меньше, чем за 1 секунду, что позволяет предположить, что он ничего не делает.
Почему это может быть?

Подробнее здесь: https://stackoverflow.com/questions/798 ... does-not-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»