You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

dataset库向SQLite插入DBF文本ID记录类型不匹配怎么解决

原因

直接通过db['table1']引用不存在的表时,dataset会自动创建该表,默认新增一个名为id的int类型自增主键列,和你待插入的text类型ID字段类型不匹配,因此触发报错。

解决方案

方案1:显式指定主键为文本类型(适用于ID需要作为主键的场景)

连接数据库后先手动创建表,指定主键的名称和类型,和DBF里的字段匹配即可:

db = dataset.connect('sqlite:///:memory:')
# 手动创建表,指定主键名为ID,类型为TEXT
table = db.create_table('table1', primary_id='ID', primary_type='TEXT')

for record in DBF(settings['xbasefile']):
    table.insert(record)

方案2:禁用自动生成主键(适用于不需要将ID设为主键的场景)

如果你不需要ID作为主键,也可以在创建表时关闭自动生成默认主键的逻辑,dataset会完全根据你插入的记录字段推断类型:

db = dataset.connect('sqlite:///:memory:')
# 关闭自动生成主键列
table = db.create_table('table1', primary_id=False)

for record in DBF(settings['xbasefile']):
    table.insert(record)

内容的提问来源于stack exchange,提问作者user13520940

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 11:12:04