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
相关产品推荐
相关产品推荐

