Azure App Service部署FlaskApp后无法打开SQLite数据库文件求助
解决Azure App Service中Flask应用SQLite无法打开的问题
针对你遇到的本地正常但部署到Azure App Service后提示"Cannot Open the database file"的问题,可按以下步骤解决:
1. 修正跨平台路径问题
你代码中使用的"DBN\\LeaveApp.db"是Windows专属的路径分隔符,而Azure App Service默认采用Linux容器环境,反斜杠\\会被识别为普通字符,导致路径无效。应使用Python的os.path模块生成跨平台的绝对路径:
import os import sqlite3 # 构造基于应用根目录的绝对路径 app_root = os.path.abspath(os.path.dirname(__file__)) db_directory = os.path.join(app_root, "DBN") # 确保DBN目录存在(避免部署后目录缺失) os.makedirs(db_directory, exist_ok=True) # 生成数据库文件的完整路径 DATABASE = os.path.join(db_directory, "LeaveApp.db") # 连接数据库 try: conn_db = sqlite3.connect(DATABASE) print("open database successfully") c = conn_db.cursor() except Exception as e: print(f"数据库连接错误: {str(e)}")
2. 验证文件权限与目录存在性
- 部署后,通过Azure门户的**高级工具(Kudu)**进入
/home/site/wwwroot目录,确认DBN文件夹已存在,且LeaveApp.db文件的权限设置为允许应用进程读写(默认部署的文件权限通常满足要求,若手动上传需检查)。 - SQLite数据库文件需要读写权限,确保App Service的运行进程对目标目录有读写权限。
3. 注意多实例环境限制
如果你的App Service配置了多个运行实例,SQLite文件型数据库会出现并发读写冲突,这种情况下建议改用Azure SQL Database或Azure Cosmos DB等云数据库。若仅单实例运行,上述方案即可解决问题。
内容的提问来源于stack exchange,提问作者user10913305
相关产品推荐
相关产品推荐

