Python脚本打开scrapy_quotes.db返回空,终端正常访问问题排查
问题原因及解决方法
最常见原因:工作目录不匹配
你在终端用sqlite3 scrapy_quotes.db打开的是当前终端所在目录下的数据库文件,但Python脚本运行时的工作目录可能和终端不同——这会导致SQLAlchemy连接的是一个新创建的空数据库,自然返回空表列表。
解决方式:
- 使用绝对路径指定数据库文件,示例代码:
from sqlalchemy import create_engine from sqlalchemy.inspect import inspect # 替换为你的scrapy_quotes.db实际绝对路径 engine = create_engine('sqlite:////path/to/your/scrapy_quotes.db') insp = inspect(engine) print(insp.get_table_names()) - 或者先确认脚本运行的当前工作目录,确保数据库文件在该目录下:
import os print(os.getcwd()) # 输出脚本运行时的当前目录
显式指定SQLite主schema
少数情况下,SQLAlchemy的inspect工具默认可能未查询SQLite的main schema(SQLite默认表都在这个schema下),可以尝试显式指定schema参数:
print(insp.get_table_names(schema='main'))
版本兼容问题
如果使用的SQLAlchemy版本较旧,可能存在SQLite表检测的兼容问题,尝试升级到最新版本:
pip install --upgrade sqlalchemy
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

