dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2195
  • 铜币13840枚
  • 威望6020点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
阅读:216回复:0

如何删除 django应用中的表结构及数据?

楼主#
更多 发布于:2019-01-29 10:26
ORM 是 Object Relational Mapping(关系对象映射)的简写,通过Django ORM可以将数据库的语法转换成了 Python的语法形式,我们只要写 Python 码就可以了,ORM 会把 Python代码翻译成对应的数据库操作语言。

目标
1. 使用django orm 方式,删除 db.sqlite3 数据库中的web应用表及数据(web_开头的表)。
2. 保留 models.py 中的 model类。

环境
Django-1.11
Python-3.4
db.sqlite3(默认的数据库)

方法
1. models 文件
# django models 规则,类名即表名,属性名即列名。
# cat web/models.py
from django.db import models
# 省略...

# post
class Post(models.Model):

    title = models.CharField(max_length=80)
    body = models.TextField()
    created_time = models.DateTimeField()
    modified_time = models.DateTimeField()
    excerpt = models.CharField(max_length=200, blank=True)
    views = models.PositiveIntegerField(default=0)

    category = models.ForeignKey(Category)
    tags = models.ManyToManyField(Tag, blank=True)
    author = models.ForeignKey(User)

    def __str__(self):
        return self.title

    class Meta:
        ordering = ['-created_time']

# other model 省略...

2. db.sqlite3
# 已经存在表结构及数据

描述:django-remove-model

图片:django-remove-model-1.png

django-remove-model


3. 删除 web应用中的表结构及数据
python manage.py migrate web zero
Operations to perform:
  Unapply all migrations: web
Running migrations:
  Rendering model states... DONE
  Unapplying web.0001_initial... OK

4. 验证

描述:django-remove-model

图片:django-remove-model-2.png

django-remove-model



扩展:
1. 创建新的表
python manage.py makemigrations web
Migrations for 'web':  web/migrations/0001_initial.py
    - Create model Asset
    - Create model Category
    - Create model Platform
    - Create model Project
    - Create model Region
    - Add field category to asset
    - Add field platform to asset
    - Add field project to asset
    - Add field region to asset

python manage.py migrate
Operations to perform:  Apply all migrations: admin, auth, contenttypes, sessions, users, web
Running migrations:
  Applying web.0001_initial... OK

2. 导出数据
python manage.py dumpdata web -o mig.sql
[...........................................................................]

3. 导入数据
python manage.py loaddata mig.json
Installed 17 object(s) from 1 fixture(s)

#
欢迎关注微信公众号: 运维录
游客

返回顶部