пытается импортировать CSV-файл в базу данных postgresql через python3 - PullRequest
2 голосов
/ 27 октября 2019

Это мой проект cs50w, здесь я пытаюсь импортировать файл books.csv в базу данных postgresql, но я получаю некоторые ошибки, я думаю, что у меня возникли проблемы с моим сценарием, может кто-нибудь исправить это ...

import psycopg2
import csv

#For connecting to the database
conn = psycopg2.connect("host=hostname_here port=5432 dbname=dbname_here user=username_here password=pass_here")
cur = conn.cursor()

#importing csv file
with open('books.csv', 'r') as f:
    reader = csv.reader(f)
next(reader)

for row in reader:
    cur.execute("INSERT INTO book VALUES (%s, %s, %s, %s)",
                row
                )
    conn.commit()


Traceback (most recent call last):
  File "import.py", line 15, in <module>
  row
psycopg2.errors.SyntaxError: INSERT has more expressions than target      columns
LINE 1: INSERT INTO book VALUES ('0380795272', 'Krondor: The Betraya...

образец файла CSV: образец файла CSV:

Ответы [ 2 ]

0 голосов
/ 27 октября 2019

Проблема решена в моей таблице postgres. Я установил isbn на целое число, но я не видел алфавитов с ним, теперь я изменил столбец isbn на varchar, и проблема решена

0 голосов
/ 27 октября 2019

У INSERT больше выражений, чем у целевых столбцов.

Вы пытаетесь вставить строку с 4 значениями в таблицу, содержащую менее 4 столбцов.

Однако, если таблица действительно имеет 4 столбца, вам необходимо просмотреть ваш источник данных (books.cvs.) Исходные данные могут иметь одинарные кавычки или запятые. Удалите проблемные данные из файла или измените программу для правильной обработки данных.

...