【问题标题】:having trouble writing a dataframe to an sqlite database将数据框写入 sqlite 数据库时遇到问题
【发布时间】:2020-02-18 15:37:09
【问题描述】:

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.

【问题讨论】:

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


    【解决方案1】:

    我无法访问您引用的页面。尽管如此,在将数据从数据框放入 SQL 之前,您需要对数据进行工程设计。检查数据类型:

     df.dtypes()
    

    如果第二列有“object”,则需要检查是否是sql支持的类型。

    【讨论】:

    • 这是响应 >>> df.dtypes() Traceback(最近一次调用最后一次):文件“”,第 1 行,在 类型错误:'Series' 对象不是callable >>> df name headers rowSet 0 TeamGameLogs [SEASON_YEAR, TEAM_ID, TEAM_ABBREVIATION, TEAM... [[2019-20, 1610612746, LAC, LA Clippers, 00219...
    【解决方案2】:

    检查响应中返回的数据类型。我们知道 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

    【讨论】:

      【解决方案3】:

      我最终弄明白了。

      我不同的做事方式是使用 API 提供的 .get_data_frames()[0] 函数,然后我可以通过选择列表中的 0 位置来获取数据框。这可以插入到数据库中。

      【讨论】:

        猜你喜欢
        • 2017-11-19
        • 2014-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-22
        • 1970-01-01
        • 1970-01-01
        • 2014-07-16
        相关资源
        最近更新 更多