如何在Vercel上为已部署的Flask应用连接PostgreSQL/SQLite数据库?
在Vercel上部署Flask并连接数据库的解决方案
一、Vercel是否支持Flask应用部署?
完全支持。Vercel通过Serverless Functions对Python(包括Flask)提供官方支持,只要配置正确的项目结构和vercel.json文件,就能正常部署运行。
二、Flask连接Vercel PostgreSQL数据库的步骤
获取数据库连接信息
在Vercel控制台的数据库管理页面,复制系统生成的DATABASE_URL(格式为postgres://user:password@host:port/dbname),这是连接PostgreSQL的核心凭证。配置Flask数据库连接
以Flask-SQLAlchemy为例,在你的Flask主文件中添加以下配置:from flask import Flask from flask_sqlalchemy import SQLAlchemy import os app = Flask(__name__) # 从Vercel环境变量中读取数据库链接 app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv('DATABASE_URL') app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app)若直接使用
psycopg2,可这样连接:import psycopg2 import os conn = psycopg2.connect(os.getenv('DATABASE_URL'))注意:需在Vercel项目设置的「环境变量」中确认
DATABASE_URL已正确添加并生效。部署配置文件
vercel.json
确保项目根目录下存在vercel.json,配置示例如下(假设你的Flask主文件是app.py):{ "builds": [ { "src": "app.py", "use": "@vercel/python" } ], "routes": [ { "src": "/(.*)", "dest": "app.py" } ] }
三、关于SQLite数据库的连接与局限性
Vercel是无服务器平台,文件系统为临时存储,生产环境绝对不建议使用SQLite——每次函数冷启动或部署后,SQLite文件中的数据会被重置,无法持久化存储。
如果仅用于本地测试或数据迁移:
- 可将本地SQLite数据库文件放在项目目录中,配置连接:
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///your_local_db.db' - 若要保留数据,建议将SQLite中的数据导出为SQL脚本,在Vercel PostgreSQL中执行脚本完成数据迁移,之后改用PostgreSQL连接方案。
内容的提问来源于stack exchange,提问作者Deepti Sheoran
相关产品推荐
相关产品推荐

