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

升级Python与SQLAlchemy后无法连接SQLite数据库问题

Python 3.11下Flask-SQLAlchemy连接SQLite报错排查

问题背景

  • 原运行环境:虚拟环境中使用Python 3.10,搭配Flask 2.1.3、依赖SQLAlchemy 1.4.40的Flask-SQLAlchemy 2.5.1,操作SQLite数据库一切正常
  • 变更后:在PyCharm中切换为Python 3.11解释器,并安装了对应依赖的最新版本(Flask 2.2.2、Flask-SQLAlchemy 3.0.2),此时每次访问数据库都会抛出错误

错误信息

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file

特殊情况

按照Flask-SQLAlchemy官方文档新建空白项目时,Python 3.11解释器可以正常连接SQLite数据库,没有报错。

应用初始化代码

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import os
from flask_migrate import Migrate
from flask_bootstrap import Bootstrap5

db = SQLAlchemy()
SECRET_KEY = os.urandom(32)

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database/testdb.db'
app.config['SECRET_KEY'] = SECRET_KEY
app.config['SERVER_NAME'] = 'localhost:5000'

db.init_app(app)

Bootstrap5(app)

migrate = Migrate(app, db, render_as_batch=True)

from Connector.routes import routes

排查与解决建议

  • 检查目录权限与存在性:确认项目中的database目录是否存在,以及Python 3.11解释器对该目录是否有读写权限。如果目录不存在,手动创建database文件夹后再测试。
  • 改用绝对路径配置:相对路径的解析可能因解释器运行目录差异出现问题,改用绝对路径配置数据库地址:
    # 替换原SQLALCHEMY_DATABASE_URI配置行
    base_dir = os.path.dirname(os.path.abspath(__file__))
    app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{os.path.join(base_dir, "database", "testdb.db")}'
    
  • 验证虚拟环境依赖:确认Python 3.11的虚拟环境已正确激活,所有依赖已完整安装。可以重新执行pip install flask flask-sqlalchemy flask-migrate flask-bootstrap确保依赖无缺失。
  • 清理缓存文件:删除Python 3.11环境下项目中的__pycache__文件夹,避免旧的编译缓存影响路径解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:40:26