sqlite3.InterfaceError:错误绑定参数2-可能是不受支持的类型。
这是重现错误的确切代码
在打开开发工具的情况下转到此页面
https://stats.nba.com/teams/boxscores-traditional/
在teamgamelogs端点上右键单击->复制->复制为curl(bash)
转换为python请求 https://curl.trillworks.com/
import pandas as pd
import requests
import sqlite3
response = requests.get('https://stats.nba.com/stats/teamgamelogs?DateFrom=&DateTo=&GameSegment=&LastNGames=0&LeagueID=00&Location=&MeasureType=Base&Month=0&OpponentTeamID=0&Outcome=&PORound=0&PaceAdjust=N&PerMode=Totals&Period=0&PlusMinus=N&Rank=N&Season=2019-20&SeasonSegment=&SeasonType=Regular+Season&ShotClockRange=&VsConference=&VsDivision=', headers=headers, cookies=cookies)
conn = sqlite3.connect('nbastats.db')
stats = response.json()
df = pd.DataFrame(stats["resultSets"])
df.to_sql('Team_stats', conn, if_exists='append')
我不明白为什么会收到此错误。
sqlite3.InterfaceError: Error binding parameter 2 - probably unsupported type.
答案 0 :(得分:0)
我无法访问您引用的页面。但是,您需要先对数据进行工程设计,然后再将其从数据帧放入SQL。检查数据类型:
df.dtypes()
如果第二列中有“对象”,则需要检查它是否为sql支持的类型。
答案 1 :(得分:0)
检查响应中返回的数据类型。众所周知,SQLite 3仅支持以下数据类型。
1)NULL。该值为NULL值。
2)INTEGER。该值是一个有符号整数,根据值的大小存储在1、2、3、4、6或8个字节中。
3)真实。该值为浮点值,存储为8字节的IEEE浮点数。
4)TEXT。该值是一个文本字符串,使用数据库编码(UTF-8,UTF-16BE或UTF-16LE)存储。
5)BLOB。该值是数据的一滴,完全按输入存储。
答案 2 :(得分:0)
我最终弄清楚了。
我的另一种处理方式是使用API提供的.get_data_frames()[0]函数,然后我可以通过选择列表中的0位置来获取数据帧。可以将其插入数据库。