Python3:仅将更新的CSV文件的新行添加到MySQL数据库

时间:2018-11-14 19:56:02

标签: python mysql python-3.x pandas sqlalchemy

我每天使用Selenium下载相同的CSV文件多次。我希望每小时将这个重新下载的CSV文件的新行的内容附加到MySQL。

我仅想捕获CSV中新创建的行之前使用的原始代码是:

import pymysql
from sqlalchemy import create_engine
import pandas as  pd

data = pd.read_csv('CleanCSV.csv', sep=',', parse_dates=[0])
new_df2 = data.assign(time_stamp=datetime.datetime.now())
cnx = create_engine('mysql+pymysql://root:root@localhost:3306/stats', 
echo=False)
new_df2.to_sql(name='stats', con=cnx, if_exists='replace', index=False)
print('Imported')

以上内容当然只是替换了表格及其内容,但是我想保留原始内容,只添加在CSV中找到的新行。

此代码后来演变为(使用stackoverflow搜索):

import pymysql
from sqlalchemy import create_engine
import pandas as pd

data = pd.read_csv('Callbacks_Cleaned.csv', sep=',')
cnx = create_engine('mysql+pymysql://root:root@localhost:3306/stats', 
echo=False)
for i in range(len(data)):
   data.iloc[i:i + 1].to_sql(name="callbacks", if_exists='append', con=cnx)

但是这不起作用。我不断收到完整性/主键:

  

sqlalchemy.exc.IntegrityError:(pymysql.err.IntegrityError)(1062,   “键“ PRIMARY”的条目“ 0”重复”)

这里的任何指导都将不胜感激。

0 个答案:

没有答案