python orm
这是一个新手理论问题——我刚刚开始使用Python并研究Django和orm。问题:如果我开发我的对象,并通过额外的开发修改基本对象结构、继承等-Django的ORM解决方案会自动修改数据库还是需要执行转换(如果应用程序是实时的) 所以,我从一个基本的手机应用开始 对象人:姓名、地址、城市、州、邮编、电话 我改成 对象人:标题、姓名、地址、城市、州、邮政编码、电话对象 对象电话:类型,电话#python orm,python,database,django,django-models,Python,Database,Django,Django Models,这是一个新手理论问题——我刚刚开始使用Python并研究Django和orm。问题:如果我开发我的对象,并通过额外的开发修改基本对象结构、继承等-Django的ORM解决方案会自动修改数据库还是需要执行转换(如果应用程序是实时的) 所以,我从一个基本的手机应用开始 对象人:姓名、地址、城市、州、邮编、电话 我改成 对象人:标题、姓名、地址、城市、州、邮政编码、电话对象 对象电话:类型,电话# 我是通过db手动转换并更改代码,还是ORM中间件进行更改?如果是这样的话,那怎么办?Django的书在接
我是通过db手动转换并更改代码,还是ORM中间件进行更改?如果是这样的话,那怎么办?Django的书在接近本章结尾的地方(或在网页版的页面底部)介绍了这个问题。基本上,规则是:
- 添加字段时,首先手动将其添加到数据库中(使用,例如,
),然后将字段添加到模型中。(您可以使用altertable
查看要执行的SQL语句。)manage.py sqlall
- 删除字段时,请将其从模型中删除,然后执行适当的SQL语句以删除该列(例如,
命令)以及创建的所有联接表altertable
- 重命名字段基本上是添加/删除字段以及复制数据的组合
Django模式迁移有一些工具即将出现。(我在看。)我们在应用程序名称中包含一个“版本”号 我们的目录是这样的
project
settings.py
appA_1
__init__.py
models.py
tests.py
appB_1
__init__.py
models.py
tests.py
appB_2
__init__.py
models.py
tests.py
这显示了appB的两个版本。appB_1是原始版本。当我们更改模型时,我们首先复制应用程序以创建appB_2,然后修改该应用程序
Amanage.py syncdb
将创建新的appB_2
我们必须通过从appB_1复制到appB_2来卸载和重新加载表。一次
然后我们可以从settings.py中删除appB_1。以后我们可以从数据库中删除表。-1与使用原始SQL迁移或django evolution或South等工具相比,这是一个非常麻烦的解决方案。我不推荐任何一个刚开始使用它的人使用它。我使用的是South,不仅仅是观看它,而且它比“删除模式并让Django重新创建它”或“自己手动更改模式”要好得多