我有一个API:https://baseballsavant.mlb.com/gf?game_pk=635886,我想使用python代码从这里获取数据(这是JSON格式的),并创建一个填充这些数据的表,以便我可以使用sqlite3在它上运行SQL查询。我在这里获得了JSON中的数据,但我想将它推到名为pitch.db的数据库中
以下是我到目前为止所拥有的:
import pandas as pd
import requests
import sqlite3
import json
from sqlalchemy import create_engine
engine = create_engine('sqlite://', echo=False)
url = "https://baseballsavant.mlb.com/gf?game_pk=635886"
conn = sqlite3.connect('pitch.db')
c = conn.cursor()
df = pd.read_json(url, orient='index')
df.to_sql('baseball', engine, if_exists='replace')发布于 2022-04-20 08:04:23
这是一个让投手进入分贝的例子。您必须将json扁平化,然后还必须将任何扩容的json结构扁平化,或者删除它们(因为我不知道您到底想要什么数据,所以我删除了它们)。但这会将表放入名为投球手的db文件中,并与表棒球一起使用。
import pandas as pd
import requests
import sqlite3
url = url = "https://baseballsavant.mlb.com/gf?game_pk=635886"
jsonData = requests.get(url).json()
pitchers = []
for home_away in ['home', 'away']:
for x in jsonData[f'{home_away}_pitchers'].values():
pitchers += x
pitchers_df = pd.DataFrame(pitchers)
cols = ['play_id','inning','ab_number','outs','stand','batter_name','p_throws',
'pitcher_name','team_batting','team_fielding','result','strikes',
'balls','pre_strikes','pre_balls','call_name','pitch_type','start_speed',
'extension','zone','spin_rate','hit_speed','hit_distance','hit_angle',
'is_barrel','is_bip_out','pitch_number','player_total_pitches',
'game_pk']
pitchers_df = pitchers_df[cols]
conn = sqlite3.connect('pitch.db')
pitchers_df.to_sql('baseball', conn, if_exists='replace', index=False)
conn.close()输出:

https://stackoverflow.com/questions/71898891
复制相似问题