首页 / 知识
改变Django中的数据库表
2023-04-13 17:11:00

Altering database tables in Django
我正在考虑将Django用于我正在开始的项目(fyi,一个基于浏览器的游戏),我最喜欢的一个功能是使用
似乎改变现有的表必须"手动"完成。 我想知道的是最好的方法。 我想到了两种解决方案:
有任何想法吗? 手动执行SQL更改和转储/重新加载都是选项,但您可能还想查看Django的一些架构演变包。最成熟的选择是django-evolution和South。 编辑:嘿,这里有dmigrations。 更新:由于这个答案最初编写,django-evolution和dmigrations都停止了积极的开发,而South已成为Django中模式迁移的事实标准。在下一个或两个版本中,南部的部分甚至可以集成到Django中。 更新:基于South的模式迁移框架(由South的作者Andrew Godwin撰写)包含在Django 1.7+中。 正如同一主题的其他答案所述,请务必在YouTube上观看DjangoCon 2008 Schema Evolution Panel。 此外,地图上还有两个新项目:Simplemigrations和Migratory。
一个很好的方法是通过灯具,特别是 fixture是包含数据库的序列化内容的文件集合。所以就像拥有数据库的备份一样,但是Django知道它更容易使用,并且当你来做单元测试时会有额外的好处。
您可以使用
您可以使用
另一个好处是,当您运行 当然,当您将模型和列的属性添加到数据库时,这将起作用。如果从数据库中删除列,则需要更新夹具以删除该列的数据,这可能不是直截了当的。 在开发期间进行大量的数据库更改时,这种方法效果最佳。对于更新生产数据库,手动生成的SQL脚本通常最有效。 我一直在使用django-evolution。注意事项包括:
也就是说,我发现自定义
如果我有更多的指纹和变化,我会重新考虑它。在此之前,让它更清洁会从其他东西中窃取开发时间。 编辑:鉴于我正在手动构建我的更改,我将在下次尝试dmigrations。 django-command-extensions是一个django库,它为manage.py提供了一些额外的命令。其中一个是sqldiff,它应该为您提供更新到新模型所需的sql。然而,它被列为"非常实验性的"。
Django 1.7(目前正在开发中)使用 到目前为止,在我的公司,我们使用了手动方法。最适合您的方法在很大程度上取决于您的开发风格。 我们通常在生产系统中没有那么多架构更改,并且从开发服务器到生产服务器的部署正式推出。每当我们推出(每年10-20次)时,我们会对当前和即将到来的生产分支进行填充,检查所有代码,并注意生产服务器上需要更改的内容。所需的更改可能是其他依赖项,对设置文件的更改以及对数据库的更改。 这对我们来说非常有效。让它全部自动化是一个利基愿景,但对我们来说很难 - 也许我们可以管理迁移,但我们仍然需要处理额外的库,服务器,无论依赖性。 |
最新内容
相关内容
linux命令创建项目组?
linux命令创建项目组?,管理,密码,项目,命令,系统,位置,文件,用户组,用户,文件夹,linux命令中用root用户新建一个user1用户,新建一个group1的组复制项目的linux命令?
复制项目的linux命令?,系统,项目,文件,命令,目录,源文件,语法,选项,目标,功能,在Linux操作系统中复制文件或目录时使用的命令是()。1、在Linuxlinux进入文档命令?
linux进入文档命令?,工作,地址,图片,系统,标准,命令,信息,设备,一致,发行,Linux系统终端打开文件用什么命令1、linux下打开图片文件的命令:eoglinux启动浏览器命令?
linux启动浏览器命令?,系统,情况,发行,不了,官网,环境,工具,传播,基础,软件,如何使用linux命令打开网页在命令符界面浏览网页可以使用lynx,linklinux命令项目部署?
linux命令项目部署?,项目,服务,环境,软件,系统,代理,管理,统一,做好,业务,怎么把php部署到apache服务器上linux?1、在linux部署php项目的方法:linux默认浏览器命令?
linux默认浏览器命令?,环境,系统,发行,工程,工具,浏览器,软件,情况,网站,管理系统,如何在Linux环境下,使用Java打开默认浏览器退出firefox。删linux部署项目的命令?
linux部署项目的命令?,项目,系统,设备,环境,工作,基础,传播,信息,标准,代码,Linux部署springBoot项目并且查看控制台日志指定路径:如下: /data/wlinux命令下载浏览器?
linux命令下载浏览器?,软件,系统,官网,网站,工具,名称,中心,密码,时间,设计,linux怎样安装google浏览器?1、打开linux虚拟机,启动火狐浏览器,在linux项目常用命令?
linux项目常用命令?,工作,地址,系统,信息,管理,项目,命令,目录,标准,网络,linux常用的20个命令系统管理相关命令:df、top、free、quota、at、lplinux项目更新命令?
linux项目更新命令?,系统,信息,网络,地址,网站,通信,管理,时间,项目,命令,linux必学的60条命令是什么?压缩和解压缩:tar:打包或解包文件。gzip:压启动项目命令linux?
启动项目命令linux?,工作,经理,产品,技术,地址,数字,系统,项目,命令,信息,怎么在linux启动的时候执行一个命令?1、在启动时执行 Linux 脚本 有linux上传文档命令?
linux上传文档命令?,服务,工具,密码,系统,软件,工作,电脑,综合,命令,文件,Linux上传文件到服务器命令是什么呢1、ssh ssh username@remotehost