首页
学习
活动
专区
圈层
工具
发布

python orm
EN

Stack Overflow用户
提问于 2009-05-19 21:41:12
回答 3查看 803关注 0票数 2

这是一个新手理论问题--我刚刚开始使用Python,并且正在研究Django和orm。问:如果我开发我的对象,并通过额外的开发修改基本对象结构,继承等-Django的ORM解决方案是否会自动修改数据库,或者我需要执行转换(如果应用是实时的)?

因此,我从一个基本的phone应用程序对象person开始: name,address,city,state,zip,phone,然后我更改为Object person: title,name,address,city,state,zip,phone对象phone: type,Phone #

我是通过数据库手动转换并更改代码,还是由ORM中间件进行更改?如果是这样的话-怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-19 21:50:01

Django这本书在Chapter 5中介绍了这个问题,在本章的末尾(或网页底部,在网络版中)。基本上,规则是:

  • 添加字段时,首先手动将其添加到数据库(例如,使用ALTER TABLE),然后将该字段添加到模型中。(您可以使用manage.py sqlall查看要执行的SQL语句。)
  • 删除字段时,请将其从模型中删除,然后执行适当的SQL语句来删除列(例如,ALTER TABLE命令),任何对字段进行created.
  • Renaming的连接表基本上都是添加/删除字段以及复制数据的组合。

因此,回答您的问题,在Django的情况下,不,ORM不会为您处理修改--但它们并不难做到。有关更多信息,请参阅本书的那一章(上面的链接)。

票数 4
EN

Stack Overflow用户

发布于 2009-05-19 23:19:07

从Django 1.02 (subversion中的最新版本1.1 )开始,没有自动的“模式迁移”。您的选择是删除模式并让Django重新创建它(通过manage.py同步数据库),或者手动更改模式。

有一些工具即将用于Django模式迁移。(我正在看South。)

票数 5
EN

Stack Overflow用户

发布于 2009-05-20 01:06:00

我们在应用程序名称中包含一个“版本”号。

我们的目录如下所示

代码语言:javascript
复制
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,然后修改该应用程序。

manage.py syncdb将创建新的appB_2。

我们必须通过从appB_1复制到appB_2来卸载和重装这些表。

然后我们可以从settings.py中删除appB_1。稍后,我们可以从数据库中删除这些表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/885172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档