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

使用Alembic更新Azure Database for PostgreSQL灵活服务器

在Azure上使用Alembic升级PostgreSQL数据库表的可行方案

方案1:直接在Azure Web App中执行Alembic命令

因为你的Web应用已经连接到VNet内的PostgreSQL实例,可以直接在Web App环境中执行迁移命令:

方式A:使用Azure CLI

登录Azure CLI后,执行以下命令(替换占位符为你的资源信息):

az webapp run-command invoke \
  --name <你的WebApp名称> \
  --resource-group <资源组名称> \
  --command "cd /home/site/wwwroot && alembic upgrade head"

注意:确保/home/site/wwwroot是你代码部署的根目录,且该目录下存在alembic.ini配置文件,同时配置文件中的数据库连接字符串正确指向VNet内的PostgreSQL实例。

方式B:使用Kudu控制台

  1. 从Azure Portal进入你的Web App,打开「高级工具」,点击「Go」进入Kudu控制台
  2. 选择Debug Console > Bash,导航到代码部署目录(通常是/home/site/wwwroot)
  3. 直接运行命令:
alembic upgrade head

方案2:将Alembic迁移集成到部署流程

如果用GitHub Actions或Azure DevOps Pipeline部署Web应用,可以在部署完成后自动执行迁移:

GitHub Actions示例片段

在部署Web App的步骤后添加:

- name: Run Alembic upgrade
  uses: azure/cli@v1
  with:
    inlineScript: |
      az webapp run-command invoke --name ${{ secrets.WEBAPP_NAME }} --resource-group ${{ secrets.RESOURCE_GROUP }} --command "cd /home/site/wwwroot && alembic upgrade head"

提前在GitHub Secrets中配置WEBAPP_NAME和RESOURCE_GROUP等信息。

方案3:容器化部署时集成迁移(若适用)

如果你的Web应用是容器化部署,修改Dockerfile,在启动应用前先执行Alembic迁移:

FROM python:3.10-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

# 执行数据库迁移
RUN alembic upgrade head

# 启动应用
CMD ["gunicorn", "app:app"]

注意:需通过环境变量传递数据库连接字符串(避免硬编码),且确保迁移是幂等的,重复执行不会出错。

关键注意事项

  • 配置连接字符串:推荐在alembic.ini中用环境变量引用数据库连接,比如sqlalchemy.url = %(DB_CONNECTION_STRING)s,然后在Web App的「应用设置」中添加DB_CONNECTION_STRING环境变量,值为PostgreSQL的私有连接字符串(适配VNet环境)。
  • 权限验证:确保Web App的托管标识或服务主体拥有PostgreSQL实例的访问权限,同时VNet防火墙规则允许Web App所在子网访问PostgreSQL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 22:01:16