Python sqlite3创建表-操作错误:无此类列:nan
脚本可以正确插入任意数量的表,但以下情况除外: 采用与成功创建的其他表相同的格式。我不知道它为什么要识别Python sqlite3创建表-操作错误:无此类列:nan,python,sqlite,nan,create-table,Python,Sqlite,Nan,Create Table,脚本可以正确插入任意数量的表,但以下情况除外: 采用与成功创建的其他表相同的格式。我不知道它为什么要识别nan列 create_wealth_income_top_decile =""" CREATE TABLE wealth_income_top_decile( id SERIAL PRIMARY KEY, "year" INT, "income_top_10" REAL, "wea
nan
列
create_wealth_income_top_decile ="""
CREATE TABLE wealth_income_top_decile(
id SERIAL PRIMARY KEY,
"year" INT,
"income_top_10" REAL,
"wealth_top_10" REAL
);
"""
cursor.execute(create_wealth_income_top_decile)
""" Use for loop to populate table with tuples from csv """
for i in wealth_inc_data.to_records(index=False):
insertinfo_2 ="""
INSERT INTO wealth_income_top_decile(
year,
income_top_10,
wealth_top_10
)
VALUES
"""+str(i) + ';'
cursor.execute(insertinfo_2)
cursor.close()
CONN.commit()
这是我得到的错误:
文件“create_db.py”,第67行,在
cursor.execute(insertinfo_2)
sqlite3.0错误:没有这样的列:nan
我在将NAN值插入db时遇到了这个错误,我们的一些操作在插入db之前将整数值转换为NAN
如果您的db列不支持nan或inf的int或real值,请不要将其插入db。很抱歉,我之前(已删除)的评论中有错误!显然,csv中的一个(或多个)值丢失,并被转换为(由)nan值。不确定您是如何读取CSV的,什么是
wealth\u inc\u data
?但是,根据您对数据的解释,您可能可以尝试使用零或类似的数字来填补空白。如果数据有其他“污点”,例如错误的小数分隔符,或者出现类似的异常(可能很难注意到),导致读卡器无法将字符串转换为数字,则可能会发生类似的情况。如果是这样,如果它是通过Pandasread\u csv
,你可以在插入记录之前的某个地方给调用wealth\u inc\u data.fillna(0)
一个快照,看看它是否适合这个问题。(*当然,nan被视为一个不带引号的字符串,这将引用列“nan”在SQL世界中,如果我在调试SQL语句时正确理解了错误消息和其他位,请始终检查(即输出、打印、记录、监视)命令字符串的值,以确保SQL的格式正确。在您的情况下,这不仅意味着在调用cursor.execute之前输出insertinfo_2
的值,而且还意味着输出str(i)
的值,因为它用于构造insertinfo_2
。这不仅应该作为您自己调试的一部分进行,还应该在问题中提供此类信息。否则,我们不知道您实际上在数据库上执行什么!现在只是猜测而已。