无法将数据帧写入sqlite数据库

时间:2020-02-18 15:37:09

标签: python python-3.x sqlite python-requests statistics

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.

3 个答案:

答案 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。该值是数据的一滴,完全按输入存储。

参考:https://www.sqlite.org/datatype3.html

答案 2 :(得分:0)

我最终弄清楚了。

我的另一种处理方式是使用API​​提供的.get_data_frames()[0]函数,然后我可以通过选择列表中的0位置来获取数据帧。可以将其插入数据库。

相关问题