Python CSV转换为SQL,但所有值均为空

Python CSV转换为SQL,但所有值均为空,python,sql,sqlite,Python,Sql,Sqlite,我正在尝试使用sqlite3将一组关系.csv文件转换为数据库: 将熊猫作为pd导入 导入操作系统 导入csv 导入sqlite3 dir='db_folder/' dir2='test/1/' #干净数据 对于os.listdir(dir)中的文件: 如果文件.endswith(“.csv”): filename=os.path.splitext(os.path.basename(文件))[0] 将open(f'{dir}{file}',encoding='utf8',errors='igno

我正在尝试使用sqlite3将一组关系.csv文件转换为数据库:

将熊猫作为pd导入
导入操作系统
导入csv
导入sqlite3
dir='db_folder/'
dir2='test/1/'
#干净数据
对于os.listdir(dir)中的文件:
如果文件.endswith(“.csv”):
filename=os.path.splitext(os.path.basename(文件))[0]
将open(f'{dir}{file}',encoding='utf8',errors='ignore')作为f:
列=列表(过滤器(无,csv.DictReader(f).fieldnames))
df=pd.read\u csv(f,低内存=False)
clean=df.dropna(1,how='all')
路径=r'./TEST/1/'
clean.to_csv(f'{path}{filename}.csv',header=columns,index=False)
#创建表并插入数据
conn=sqlite3.connect('test/mydatabase.db')
游标=连接游标()
对于os.listdir(dir2)中的文件:
filename=os.path.splitext(os.path.basename(文件))[0]
将open(f'{dir2}{file}',encoding='utf8',errors='ignore')作为f:
columns=csv.DictReader(f).fieldnames
execute('DROP TABLE IF EXISTS“{TABLE}”格式(TABLE=filename))
execute('CREATE TABLE“{TABLE}”({columns})').format(
table=filename,columns=',.join(“{}”格式(column中的column)))
dr=csv.DictReader(f)
executemany('插入到“{table}”值({VALUES})').format(
table=文件名,值=','.join('?'表示列中的列)),
(dr中行的列表(映射(row.get,columns))
康涅狄格州提交
cursor.close()
康涅狄格州关闭
这样运行时不会出错,并生成一个包含正确表且具有正确列的数据库。但是,由于某些原因,这些行都是空的


我已经试着调试插入行,看看发生了什么。我进入了
executemany()
函数。DictReader变量中有一个fieldnames列表
['2','383','0.5019','2003-08-12']
,它实际上是属于表中的一行。我不明白为什么它会以NULL的形式插入到我的数据库中。

(dr中的行的列表(map(row.get,columns))
生成一个生成器对象,但获取一系列序列。相反,对于dr中的行,您需要
[list(map(row.get,dr.fieldnames)]
[]
而不是
()
(对于dr中的行,list(map(row.get,columns))
生成一个生成器对象,但需要一系列序列。相反,对于dr中的行,您需要
[list(map(row.get,dr.fieldnames))
[]
而不是
()

注意。在python中,或者仅使用SQLite工具或类似工具?您可以使用sqlite3 cli。它将接受STDIN上的命令。还有。请注意。在python中,或者仅使用SQLite工具或类似工具?您可以使用sqlite3 cli的。它将接受STDIN上的命令。还有,宾果!谢谢,宾果!非常感谢。