gpt4 book ai didi

python - 更新 PostgreSQL 架构并将其部署到 Heroku

转载 作者:行者123 更新时间:2023-11-29 12:05:50 29 4
gpt4 key购买 nike

我有一个驻留在 schema.sql 文件中的 PostgreSQL 模式,每次在 Python 中启动数据库连接时都会运行该文件。它看起来像:

CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
facebook_id TEXT NOT NULL,
name TEXT NOT NULL,
access_token TEXT,
created TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
);

该应用程序部署在 Heroku 上,使用他们的 PostgreSQL,一切都按预期工作。

现在,如果我想稍微更改一下users 表的结构怎么办?我怎样才能以最简单和最好的方式做到这一点?我想在 schema.sql 中为我想在数据库中产生的每个更改编写一个 ALTER... 行,但我认为这不是最好的方法,因为一段时间后架构文件将充满 ALTER,这会降低我的应用程序的速度。

部署对数据库所做更改的指示方法是什么?

最佳答案

在每个连接上运行硬编码脚本并不是处理模式管理的好方法。

您需要手动管理架构,或使用成熟的工具在数据库中保留架构版本标识符,检查它,并应用脚本升级到下一个架构版本(如果它与最新版本不同) . Rails 将此称为“迁移”,它可以正常工作。如果您使用的是 Django,它也有模式管理。

如果您不使用这样的框架,我建议您只编写自己的架构升级脚本。添加具有单行的“schema_version”表。 SELECT 当应用程序在重新部署后首次启动时选择它,如果它低于应用程序知道的当前版本,则按顺序应用更新脚本,例如 schema_1_to_2schema_2_to_3

我不建议在连接时执行此操作,在应用程序启动时执行此操作,或者更好的是,作为特殊维护命令执行此操作。如果您在每个连接上都这样做,您将有多个连接尝试进行相同的更改,并且您将遇到重复的列和各种其他困惑情况。

关于python - 更新 PostgreSQL 架构并将其部署到 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17324738/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com