Py学习  »  DATABASE

sqlacalchemy:将pandas数据框中的新行添加到mysql表中,如果它们不在表中

lal • 5 年前 • 639 次点击  

我创建了一个表,插入从API获取的数据,并使用sqlacalchemy将其存储到熊猫数据帧中。 我需要每4小时查询一次API,以获取新的数据。 问题是,API不仅会返回新数据,还会返回已导入MySQL的旧数据。 如何将新数据导入mysql表

我从API中检索了数据,将数据存储到一个pandas对象中,创建了到mysql db的连接,并创建了一个新表。

import requests
import json
from pandas.io.json import json_normalize
myToken = 'xxx'
myUrl = 'somewebsite'
head = {'Authorization': 'token {}'.format(myToken)}
response = requests.get(myUrl, headers=head)
data=response.json()
#print(data.dumps(data, indent=4, sort_keys=True))
results=json_normalize(data['results'])
results.rename(columns={'datastream.name': 'datastream_name',                    
                        'datastream.url':'datastream_url',
                        'datastream.datastream_type_id':'datastream_id',
                        'start':'error_date'}, inplace=True)

results_final=pd.DataFrame([results.datastream_name,
                            results.datastream_url, 
                            results.error_date, 
                            results.datastream_id,
                            results.message,
                            results.type_label]).transpose()

from sqlalchemy import create_engine
from sqlalchemy import exc
engine = create_engine('mysql://usr:psw@ip/schema')
con = engine.connect()
results_final.to_sql(name='error',con=con,if_exists='replace')
con.close()

最终目标是插入到表中,只插入来自API的不存在的数据。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38471
 
639 次点击  
文章 [ 1 ]  |  最新文章 5 年前