Оператор вставки возвращает значение, необходимое для параметра связывания <x> - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь вставить строку из файла CSV в базу данных Postgres, которая находится на веб-сайте Heroku, код доступа к базе данных, открывает файл CSV и доступ к данным, но также возвращает ошибку InvalidRequestError.

Код правильно выбирает данные из файла CSV, я не знаю, что я делаю неправильно.

формат данных в файле CSV: 1416949658, The Dark Is Rising, Сьюзан Купер, 1973

Структура таблицы:

CREATE TABLE books(
        id SERIAL PRIMARY KEY,
        isbn VARCHAR NOT NULL,                  
                title VARCHAR NOT NULL,
        author_name VARCHAR NOT NULL,
        publish_year INTEGER NOT NULL

);
for isbn, title, author_name, publish_year in reader:
    db.execute("INSERT INTO books (isbn, title, author_name, publish_year) VALUES (:isbn, :title, :author_name, :publish_year)",\
                {isbn: isbn, title: title, author_name: author_name, publish_year: publish_year})
    print(f"Added book {title} written by {author_name} with isbn {isbn} on year {publish_year}")
db.commit()

sqlalchemy.exc.StatementError: (sqlalchemy.exc.InvalidRequestError) Для параметра привязки 'isbn' требуется значение [SQL: INSERT INTObooks (isbn, title, author_name, publish_year) ЗНАЧЕНИЯ (% (isbn) s,% (title) s,% (author_name) s,% (publish _year) s);] [параметры: [{'1416949658': '1416949658',' The Dark Rising ':' The Dark Rising ',' Susan Cooper ':' Susan Cooper ',' 1973 ':' 1973 '}]]

Как вы видите, это приноситданные, но по-прежнему возвращает ошибку.

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