(psycopg2.DataError) 整数的无效输入语法:从 csv 文件导入?

gpb*_*lio 1 python postgresql sqlalchemy

我的 csv 文件中的数据是这样的:

081299289X,China Dolls,Lisa See,2014
0345498127,Starter for Ten,David Nicholls,2003
0061053716,Imajica,Clive Barker,1991
0553262149,Emily Climbs,L.M. Montgomery,1925
Run Code Online (Sandbox Code Playgroud)

我的 import.py 是这样的:

import csv
import os

from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker

engine = create_engine('postgres://pnrvnavoxvnlgw:....')
db = scoped_session(sessionmaker(bind=engine))

def main():
    f = open("books.csv")
    reader = csv.reader(f)
    for isbn, title, author, year in reader:
        db.execute(
            "INSERT INTO books (isbn, title, author, publication_year)
               VALUES (:isbn, :title, :author, :publication_year)",
            {"isbn": isbn, "title": title, "author": author, "publication_year": year}
        )
    db.commit()

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我似乎看不出这段代码有什么问题。这是错误:

sqlalchemy.exc.DataError: (psycopg2.DataError) invalid input syntax for integer: "year"
LINE 1: ...publication_year) VALUES ('isbn', 'title', 'author', 'year')
Run Code Online (Sandbox Code Playgroud)

帮助?

Ilj*_*ilä 5

从它的外观来看,您的 CSV 包含一个标题作为第一行。例如跳过它

next(reader, None)
Run Code Online (Sandbox Code Playgroud)

在你的 for 循环之前。