gpt4 book ai didi

python - 如何阻止 Django 创建大量不必要的表

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:47 25 4
gpt4 key购买 nike

我在 setting.py 文件中定义了两个数据库。

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'monitoring',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '',
},
'source' :{
'ENGINE': 'django.db.backends.mysql',
'NAME': 'source_db',
'USER': '*****',
'PASSWORD': '*****',
'HOST': '*****',
'PORT': '****',
}
}

我需要访问 source_db 中的一些表,除非我迁移数据库,否则 django 不允许这样做。因此,一旦我们运行命令 python manage.py migrate --database=source ,Django 就会在服务器数据库中创建一些表。由于我们不允许在服务器数据库中创建表,有什么方法可以阻止 django 这样做,或者有什么方法可以在不迁移数据库的情况下访问表?

这是我们不想创建的表的列表。

+--------------------------------+
| Tables_in_source_db |
+--------------------------------+
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| dashboard_monitoring_features |
| dashboard_monitoring_modelinfo |
| dashboard_monitoring_product |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
+--------------------------------+

最佳答案

如果您想在 default 数据库而不是 source 数据库中迁移/创建表,那么您必须在运行迁移时定义应用程序和数据库。喜欢:

python manage.py migrate dashboard --database=default

这将在 dashboard 应用中运行迁移,并在 default 数据库中创建表。

接下来您要做的是将您的模型设置为 non-managed 。您可以通过在模型的元类中指定 management = False 来完成:

class YourModel(models.Model):
... your fields here ...
class Meta:
managed = False

来自 documentation :

If False, no database table creation or deletion operations will be performed for this model. This is useful if the model represents an existing table or a database view that has been created by some other means.

关于python - 如何阻止 Django 创建大量不必要的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47767808/

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