小编Mat*_*owe的帖子

Sqlalchemy:将 pandas 数据帧中的新行添加到 mysql 表中,如果它们不存在于表中

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

我从 api 检索数据,将数据存储到 pandas 对象中,创建与 mysql 数据库的连接并创建一个全新的表。

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()
Run Code Online (Sandbox Code Playgroud)

最终目标是将来自 api …

python sqlalchemy pandas

5
推荐指数
1
解决办法
1881
查看次数

Pandas 中键不相等的地方加入

我有一个像这样的数据框:

data = {'teamid': [1, 2, 3, 4], 'gameid': [1, 1, 2, 2], 'rebounds': [20, 35, 43, 15]}
game_df = pd.DataFrame(data=data)
print(game_df)

   teamid  gameid  rebounds
0       1       1        20
1       2       1        35
2       3       2        43
3       4       2        15
Run Code Online (Sandbox Code Playgroud)

我想将它加入到它自身中以生成如下数据框:

wanted_data = {'teamid': [1, 2, 3, 4], 'gameid': [1, 1, 2, 2], 'rebounds': [20, 35, 43, 15],
               'teamid_opponent': [2, 1, 4, 3], 'rebound_opponent': [35, 20, 15, 43]}
wanted_df = pd.DataFrame(data=wanted_data)
print(wanted_df)

   teamid  gameid  rebounds  teamid_opponent  rebound_opponent
0       1 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

3
推荐指数
1
解决办法
1100
查看次数

标签 统计

pandas ×2

python ×2

dataframe ×1

sqlalchemy ×1