在将数据帧写入 sqlite 数据库时遇到问题

sqlite3.接口错误:绑定参数 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.


烙印99
浏览 132回答 3
3回答

翻过高山走不出你

检查响应中返回的数据类型。众所周知,SQLite 3仅支持以下数据类型。1)空。该值为 NULL 值。2)整数。该值是一个有符号整数,存储在 1、2、3、4、6 或 8 个字节中,具体取决于值的大小。3)真实。该值是一个浮点值,存储为 8 字节 IEEE 浮点数。4)文本。该值是使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储的文本字符串。5)斑点。该值是一个数据 blob,完全按照输入的方式存储。参考资料 : https://www.sqlite.org/datatype3.html

哈士奇WWW

我最终弄清楚了。我的不同做事方式是使用API提供的.get_data_frames()[0]函数,然后我能够通过选择列表中的0位置来获得数据帧。这可以插入到数据库中。

犯罪嫌疑人X

我无法访问您引用的页面。尽管如此,在将数据从数据帧放入SQL之前,您需要先对其进行工程设计。检查数据类型: df.dtypes()如果第二列中有“对象”,则需要检查它是否是sql支持的类型。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python