Django删除数据库表格后如何重建

为了解决群友的问题,我亲自删了下我自己数据库的一个表,然后敲了一系列的dos命令,发现都不够完美,最终我发现了在数据库里有一个记录生成表格的记录也就是我们的django_makemigrations这个表,


我们只需要删除之前你创建表格对应的那条记录,见下图。


然后我们还需要删除migrations里的那个迁移文件,


然后直接,python manage.py makemigrations,再然后,python manage.py migrate。齐活。




  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,我明白了,接下来我会一步步为你解释如何实现这个功能。 首先,我们需要在数据库中创建一个视图,并且通过 Django ORM 访问这个视图。在 Django 中,我们可以使用 `django-mysql` 库来创建视图,具体方法可以参考官方文档:https://docs.djangoproject.com/en/3.2/ref/models/options/#django.db.models.options.Options.managed 下面是一个示例 SQL 语句,用于创建一个名为 `my_view` 的视图: ``` CREATE VIEW my_view AS SELECT column1, column2, ... FROM my_table WHERE ... ``` 这个语句创建了一个名为 `my_view` 的视图,它的内容是从 `my_table` 表中选择特定的列和行。 接下来,我们可以使用 `inspectdb` 命令生成对应的 Django 模型,例如: ``` python manage.py inspectdb --database=my_db > models.py ``` 这个命令会根据 `my_db` 数据库中的表格和视图生成对应的 Django 模型,并保存到 `models.py` 文件中。 然后,我们需要编写访问数据库视图的模型,设置 `managed = False`,并让它与表格1的内容一致。这可以通过继承自表格1的模型,并将 `Meta` 类中的 `managed` 属性设置为 `False` 来实现,例如: ```python class MyView(models.Model): column1 = models.CharField(max_length=100) column2 = models.CharField(max_length=100) ... class Meta: managed = False db_table = 'my_view' ``` 这个模型定义了一个名为 `MyView` 的类,它对应着名为 `my_view` 的视图。它与表格1的模型(假设为 `MyTable`)的字段需要一一对应,以保证两个表格的内容一致。 最后,我们需要定时将表格2的数据更新到表格1。这可以通过编写一个 Django 的管理命令来实现,例如: ```python from django.core.management.base import BaseCommand from myapp.models import MyTable, MyView class Command(BaseCommand): help = 'Update MyTable from MyView' def handle(self, *args, **options): for obj in MyView.objects.all(): MyTable.objects.update_or_create( id=obj.id, defaults={ 'column1': obj.column1, 'column2': obj.column2, ... } ) ``` 这个管理命令可以使用 `cron` 或其他定时任务工具来定时执行,以实现表格1和表格2的数据同步。 需要注意的是,首次执行这个命令时,表格1的内容为空,需要将表格2的全部数据更新到表格1。这可以通过在命令中添加特判来实现。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值