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'