Python 将多个csv文件插入现有mysql表时出错
我正在尝试使用以下代码,使用sqlalchemy将多个csv文件插入名为“Trainstat”的现有mysql表中:Python 将多个csv文件插入现有mysql表时出错,python,pandas,Python,Pandas,我正在尝试使用以下代码,使用sqlalchemy将多个csv文件插入名为“Trainstat”的现有mysql表中: import os, sys import pandas as pd from sqlalchemy import create_engine engine = create_engine('mysql+mysqldb://si:j9@localhost/db') path= "/home/sh/T/f/" dirs = os.listdir( path ) for file
import os, sys
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine('mysql+mysqldb://si:j9@localhost/db')
path= "/home/sh/T/f/"
dirs = os.listdir( path )
for file in dirs:
df = pd.read_csv(path+file,sep='\n')
df.to_sql('Trainstat', con=engine,dtype=None)
print(df)
然而,我似乎得到了一个错误ValueError:表'Trainstat'已经存在了
,当我打开我的表时,它只插入了一行。我输入代码时可能出现的错误是什么?除了sqlalchemy之外,还有其他方法可以将csv文件插入到已经存在的表中吗?该方法有一个(如果存在)参数:
如果存在:{'fail','replace','append'},默认为'fail'
如果表已存在,如何操作
- 失败:引发ValueError
- 替换:在插入新值之前删除表
- 追加:向现有表插入新值
还请注意,它说:
引发:ValueError
当表已经存在并且如果存在,则默认为“失败”
由于您没有通过任何测试,因此会得到默认值,fail
。因此,在为第一个DataFrame
创建表之后,每个后续的DataFrame
都会引发一个ValueError
,就像文档所说的那样。而ValueError
会准确地告诉您出了什么问题:表'Trainstat'已经存在
由于您希望追加到表中而不是失败,只需将if_exists='append'
添加到您的调用中。这是因为to_sql方法中表存在的默认参数是失败。下面对代码的更改应该可以解决您的问题
import os, sys
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine('mysql+mysqldb://si:j9@localhost/db')
path= "/home/sh/T/f/"
dirs = os.listdir( path )
for file in dirs:
df = pd.read_csv(path+file,sep='\n')
df.to_sql('Trainstat', con=engine,dtype=None,if_exists='append')
print(df)
我得到了错误sqlalchemy.exc.OperationalError:(_mysql\u exceptions.OperationalError)(1054,“字段列表”中的未知列“index”)
,即使列索引不存在且文件未插入