django中的models反向生成

用django搭建网站时,需要对数据库进行操作,一般通过models来生成数据库的格式

class fans(models.Model):
    name = models.CharField(max_length=255, verbose_name="名字")
    fans_add = models.IntegerField(verbose_name="增长")
    fans = models.IntegerField(verbose_name="粉丝数")
    flag = models.CharField(max_length=255, verbose_name="标记")
    datetime = models.DateTimeField(verbose_name="时间")

    class Meta:
        unique_together = ("name", "datetime")
        verbose_name = '粉丝数'
        verbose_name_plural = verbose_name
        db_table = "fans"
makemigrations app 创建结构
migrate app 生成表


例子:
python -u manage.py makemigrations myApp
python -u manage.py migrate myApp

myApp是创建的app
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'crm01',
        'USER': 'root',
        'PASSWORD': '1',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
        'database2': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'crm02',
        'USER': 'root',
        'PASSWORD': '1',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
} 

反向:

通过inspectdb处理类,可以将现有数据库里的一个或多个或全部数据表生成Django model实体类。

调用命令参数:

  python manage.py inspectdb --database default tablename1 tablename2 >myApp/models.py

也可以直接

  python manage.py inspectdb >myApp/models.py

 

--database default : 要转换的数据库配置别名
  --database 对应settings.py文件里的DATABASES数据库配置.
  当项目配置了两个以上的数据库才要通过 --database,不加--database参数默认就是指向default的数据库。

tablename1 tablename2 : 要转换的数据表名
  多个表名之间用逗号隔开,如果不加表名参数即是数据库里的全部表

>myApp/models.py : 输出到文件名
  文件名路径是相对manage.py文件的。
  注意:如果输出的文件里有内容,操作会清空原有内容再将结果写入。可以先输出到models_temp.py临时文件里,再将model类复制到models.py文件里。

注:

  managed = False

  由于Django会自动根据模型类生成映射的数据库表,如果你不希望Django这么做,可以把managed的值设置为False。

 

class fans(models.Model):
    name = models.CharField(max_length=255, verbose_name="名字")
    fans_add = models.IntegerField(verbose_name="增长")
    fans = models.IntegerField(verbose_name="粉丝数")
    flag = models.CharField(max_length=255, verbose_name="标记")
    datetime = models.DateTimeField(verbose_name="时间")

    class Meta:
        unique_together = ("name", "datetime")
        verbose_name = '粉丝数'
        verbose_name_plural = verbose_name
     managed = False
     db_table = 'fans'  

 

posted @ 2021-02-23 10:53  笑而不语心自闲  阅读(165)  评论(0编辑  收藏  举报