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

Jupyter Notebook导入cpi库报错:OperationalError无cu.area表

解决cpi库导入时OperationalError: no such table: cu.area错误

问题描述

在Jupyter Notebook中导入cpi库时触发OperationalError,错误栈如下:

OperationalError                          Traceback (most recent call last)
/var/folders/59/k880nk6s3m3_fp0p5dc6hfhc0000gn/T/ipykernel_6186/1241436912.py in 
<module>
----> 1 import cpi

     ~/opt/anaconda3/lib/python3.8/site-packages/cpi/__init__.py in <module>
     19 # Parse data for use
     20 logger.info("Parsing data files from the BLS")
--> 21 areas = parsers.ParseArea().parse()
     22 items = parsers.ParseItem().parse()
     23 periods = parsers.ParsePeriod().parse()

~/opt/anaconda3/lib/python3.8/site-packages/cpi/parsers.py in parse(self)
     58         logger.debug("Parsing area file")
     59         object_list = MappingList()
--> 60         for row in self.get_file("cu.area"):
     61             obj = Area(row["area_code"], row["area_name"])
     62             object_list.append(obj)

~/opt/anaconda3/lib/python3.8/site-packages/cpi/parsers.py in get_file(self, file)
     35 
     36         # Query this file
--> 37         query = cursor.execute(f'SELECT * FROM "{file}"')
     38         columns = [d[0] for d in query.description]
     39         result_list = [dict(zip(columns, r)) for r in query.fetchall()]

OperationalError: no such table: cu.area

解决思路

  • 重新初始化cpi数据库
    cpi库依赖本地SQLite存储BLS数据,若数据库未完整初始化或损坏,执行以下代码重建:

    import cpi
    cpi.update()
    

    该命令会自动下载最新数据并创建缺失的cu.area等表。

  • 重装cpi库
    若本地库文件损坏,先卸载再重装:

    pip uninstall -y cpi
    pip install cpi
    

    重装完成后执行cpi.update()初始化数据。

  • 指定可写的数据库路径
    若默认路径无读写权限,手动指定有权限的目录:

    import cpi
    # 替换为你有读写权限的路径,比如用户目录下的文件夹
    cpi.Database(path="/Users/yourname/cpi_data/cpi.db")
    cpi.update()
    
  • 检查SQLite3环境
    验证Python的sqlite3模块是否正常工作,执行以下测试代码:

    import sqlite3
    conn = sqlite3.connect(":memory:")
    cursor = conn.cursor()
    cursor.execute("CREATE TABLE test (id INT)")
    cursor.execute("INSERT INTO test VALUES (1)")
    print(conn.execute("SELECT * FROM test").fetchall())
    

    若报错,说明SQLite3环境异常,需修复Python安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:30:42