oracle 切换到Django中的另一个数据库

avkwfej4  于 2022-11-03  发布在  Oracle
关注(0)|答案(3)|浏览(223)

我有一个在Oracle数据库上创建的Django项目,我想切换到另一个Oracle数据库。我已经学习了这个教程https://pythonfusion.com/switch-database-django/,但是有一个问题,不是所有的模型都是在Django中创建的,有些是在其他数据库的现有表上使用inspectdb创建的。因此,当使用migrate --database=new 命令时,我得到了一些关于那些在Django创建之前就已经存在的表的错误。有没有办法只迁移Django工作所必需的模型和表?(用户,授权者)

busg9geu

busg9geu1#

我认为你必须看一下每个模型 meta类的托管属性,如果托管属性为true,那么django将改变数据库中的模型。
非托管模型:

class MyModel(models.Model):
    ...

    class Meta:
        managed = False # This means django will ignore MyModel when migrating

托管模型:

class MyManagedModel(models.Model):
    ...

    class Meta:
        managed = True  # This means django will migrate MyManagedModel

更多文档,请访问:https://docs.djangoproject.com/en/4.1/ref/models/options/

yr9zkbsy

yr9zkbsy2#

是的,你可以自定义你的迁移行为,命令python manage.py makemigrations创建一对夫妇的文件,用于迁移您的模型到您的数据库,任何人,你仍然可以访问这些文件,并选择确切地包括什么,排除,甚至编辑他们.
检查以下链接:https://dev.to/koladev/writing-custom-migrations-in-django-3eli

4ioopgfo

4ioopgfo3#

如果我没有理解错你的问题,那么你应该使用Django内置的迁移。要想知道你的新数据库运行了哪些迁移,运行命令manage.py showmigrations --database=new,它会显示你的应用上下文中所有迁移的列表。一旦完成,您可以通过运行命令manage.py migrate --database=new app_label migration_name手动运行所需的迁移(例如authcontenttypes)。showmigrations命令:migratehttps://docs.djangoproject.com/en/4.1/ref/django-admin/#django-admin-showmigrations命令:https://docs.djangoproject.com/en/4.1/ref/django-admin/#django-admin-migrate

相关问题