这个问题在这里已经有答案了:
(psycopg2.dataerror)整数的输入语法无效:从csv文件导入(2个答案)
11个月前关门了。
我正试着运行一个程序从csv中插入数据。文件到postgresql数据库中。
db.execute("INSERT INTO books (isbn, title, author, year) VALUES (:isbn, :title, :author, :year)",
{"isbn": isbn, "title": title, "author": author, "year": year})
代码崩溃并返回以下内容:
sqlalchemy.exc.DataError: (psycopg2.errors.InvalidTextRepresentation)
invalid input syntax for type integer: "isbn" LINE 1: ...RT INTO
books (isbn, title, author, year) VALUES ('isbn', 't...
^
[SQL: INSERT INTO books (isbn, title, author, year) VALUES (%(isbn)s,
%(title)s, %(author)s, %(year)s)] [parameters: {'isbn': 'isbn',
'title': 'title', 'author': 'author', 'year': 'year'}] (Background on
this error at: http://sqlalche.me/e/9h9h)
我从import.py源代码中获取语法并修改了值。
my books表的格式为:
id序列主键
isbn整数主键
title varchar不为空
author varchar不为空
年份整数不为空
谁能告诉我我的语法有什么问题吗?
1条答案
按热度按时间jm2pwxwz1#
正如@humayunm所说,这可能是因为您试图插入一个字符串,这给您留下了两个立即选项。
更改数据库架构(可能首选)
将isbn类型更改为
varchar(255)
偏好推理:isbn实际上是整数吗?i、 你会对它进行整数运算作为加法吗?或者是一个当前恰好被格式化为数字的id?isbn也是一种您无法控制的id格式。您真的希望应用程序与当前格式紧密耦合吗?如果将来isbn改为包含字母,会发生什么?或者,转换字符串
或者你可以直接转换
isbn
:但与第一个解决方案中建议的更改逻辑类型相比,我认为这是一个肮脏的解决方案。