Python PostgreSQL «ошибка вставки имеет больше целевых столбцов, чем выражений», но это не - PullRequest
0 голосов
/ 29 мая 2020

Я новичок в SQL и PostgreSQL, и я не могу понять, что происходит с этим кодом.

Я пытаюсь вставить csv в postgres с помощью этого кода:

import csv
import psycopg2 as pg
filename = 'myfile.csv'
try:
    conn = pg.connect(user="myuser",
        password="mypass",
        host="myhost",
        port="5432",
        database="mydb")
    cursor = conn.cursor()
    with open(filename, 'r') as f:
        reader = csv.reader(f)
        next(reader) # This skips the 1st row which is the header.
        for record in reader:
            print(record)
            cursor.execute("""INSERT INTO auth VALUES (%s, %s, %s, %s)""", record)
            conn.commit()
except (Exception, pg.Error) as e:
    print(e)
finally:
    if (conn):
        cursor.close()
        conn.close()
        print("Connection closed.")

, но он вызывает вставка ошибки имеет больше целевых столбцов, чем выражения LINE 1: ... 00000000-0000-0000-0000-000000000000 ',' 1580463062 ',' auto ')

но вот что я хочу вставить ['00000000-0000-0000-0000-000000000000', '00000000-0000-0000-0000-000000000000', '1580463062', 'auto'], и похоже, что в нем определенно ровно 4 colums

Я также пытался изменить кодировку csv с ASCII на UTF-8 и UTF-8_SIG, но я все равно получаю эту ошибку

1 Ответ

0 голосов
/ 30 мая 2020

Я решаю свою проблему этим кодом

import psycopg2
conn = psycopg2.connect("host=host dbname=dbname user=user 
password=password")
cur = conn.cursor()
with open(filename, 'r') as f:
    next(f)
    cur.copy_from(f, 'auth', sep=',')

conn.commit()
cur.close()
conn.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...