gpt4 book ai didi

Python int 太大而无法放入 SQLite

转载 作者:行者123 更新时间:2023-12-05 05:15:05 27 4
gpt4 key购买 nike

我遇到了错误

OverflowError: Python int too large to convert to SQLite INTEGER

来自以下代码块。该文件大约有 25gb,因此必须分段阅读。

length = 6128765
# Works on partitions of the dataset
def work(path, fields, partitions, rows, fn):
import numpy as np
div = rows // partitions

parts = np.arange(0, rows, div)
for i in parts:
df = pd.read_csv(path, sep='|', names=fields, skiprows=i, nrows=div, encoding='latin-1')
fn(df)
del df

def to_sql(df):
# We can use the pandas.to_sql command to put the data in our SQLlite database:
df.to_sql("main", sqlite_engine, if_exists='append', index=False)

work("path_to.txt', column_names, 105, length, to_sql)

我正在通过一个 sqlalchemy 对象使用 SQLite3 来与之交互。数据库中的所有列都是 TEXT 类型,因为我试图缓解这个问题。

谁有任何指导?

最佳答案

问题

我刚遇到同样的错误信息。看这个github issue里面说的好像这是 sqlite3 不处理无符号 64 位数字的问题。

溢出错误

顺便说一句,当您超出数字类型的范围时,会发生溢出错误

示例

如果将存储为 4 位整数的数字 15 加 1,则得到 0,因为 16 在二进制中是 10000,但只能存储最后四位 (0000)。

[1111] + [0001] = 1 [0000]

解决方案?

所以我看到的唯一一种解决方法是将整数存储为字符串。

关于Python int 太大而无法放入 SQLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51915345/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com