首页 > 数据库 >用migrate将映像数据写入数据库常见问题01

用migrate将映像数据写入数据库常见问题01

时间:2023-10-30 23:33:02浏览次数:38  
标签:常见问题 verbose migrate models length 01 CharField True name

django开发时,models.py文件创建正常,makemigrations也正常,但migrate却提示没有需要迁移的数据,查看sqlite数据库也没有建立相应的数据表。

相关文件

# coding:utf-8
# file-name:models.py

from django.db import models
class Department(models.Model):
	'''部门表'''
	title = models.CharField(verbose_name='标题',max_length=16)

	def __str__(self):
		return self.title

class Admin(models.Model):
	'''员工表'''
	username = models.CharField(verbose_name='姓名',max_length=32)
	password = models.CharField(verbose_name='密码',max_length=64)
	gender = models.IntegerField(verbose_name='性别',choices=[(1,"男"),(2,'女')],default=1)
	age = models.PositiveIntegerField(verbose_name='年龄',null=True,blank=True)
	depart = models.ForeignKey(verbose_name='部门',to='Department',on_delete=models.CASCADE)


class Phone(models.Model):
	'''号码表'''
	mobile = models.CharField(verbose_name='号码',max_length=11)

	price = models.PositiveIntegerField(verbose_name='价格',default=0)

	level = models.SmallIntegerField(
									verbose_name='级别',
									choices=[
										(1,'1级'),
										(2,'2级'),
										(3,'3级'),
										(4,'4级'),
									],
									default=1
									)

	status_choice =[
		(1,'已使用'),
		(2,'未使用'),
	]
	status = models.SmallIntegerField(verbose_name='状态',choices=status_choice,default=2)

	admin = models.ForeignKey(verbose_name='管理员',to='Admin',on_delete=models.CASCADE)



class Yonghu(models.Model):
	username = models.CharField(verbose_name='用户',max_length=8)
	password = models.CharField(verbose_name='密码',max_length=16)


class Yuangong(models.Model):
	name = models.CharField(verbose_name='姓名',max_length=8)
	gender = models.SmallIntegerField(verbose_name='性别',choices=[(1,'男'),(2,'女')],default=1)
	age = models.SmallIntegerField(verbose_name='年龄',null=True,blank=True)
	nation=models.CharField(verbose_name='民族',max_length=10)
	unit=models.CharField(verbose_name='单位',max_length=32)

所见问题

在widows窗口下运行makemigrations命令,显示结果如下:

用migrate将映像数据写入数据库常见问题01_django

后台生成映像文件0001_initial.py

# Generated by Django 4.1.5 on 2023-10-30 10:27

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Admin',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('username', models.CharField(max_length=32, verbose_name='姓名')),
                ('password', models.CharField(max_length=64, verbose_name='密码')),
                ('gender', models.IntegerField(choices=[(1, '男'), (2, '女')], default=1, verbose_name='性别')),
                ('age', models.PositiveIntegerField(blank=True, null=True, verbose_name='年龄')),
            ],
        ),
        migrations.CreateModel(
            name='Department',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=16, verbose_name='标题')),
            ],
        ),
        migrations.CreateModel(
            name='Yonghu',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('username', models.CharField(max_length=8, verbose_name='用户')),
                ('password', models.CharField(max_length=16, verbose_name='密码')),
            ],
        ),
        migrations.CreateModel(
            name='Yuangong',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=8, verbose_name='姓名')),
                ('gender', models.SmallIntegerField(choices=[(1, '男'), (2, '女')], default=1, verbose_name='性别')),
                ('age', models.SmallIntegerField(blank=True, null=True, verbose_name='年龄')),
                ('nation', models.CharField(max_length=10, verbose_name='民族')),
                ('unit', models.CharField(max_length=32, verbose_name='单位')),
            ],
        ),
        migrations.CreateModel(
            name='Phone',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('mobile', models.CharField(max_length=11, verbose_name='号码')),
                ('price', models.PositiveIntegerField(default=0, verbose_name='价格')),
                ('level', models.SmallIntegerField(choices=[(1, '1级'), (2, '2级'), (3, '3级'), (4, '4级')], default=1, verbose_name='级别')),
                ('status', models.SmallIntegerField(choices=[(1, '已使用'), (2, '未使用')], default=2, verbose_name='状态')),
                ('admin', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.admin', verbose_name='管理员')),
            ],
        ),
        migrations.AddField(
            model_name='admin',
            name='depart',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.department', verbose_name='部门'),
        ),
    ]

在windows窗口下运行migrate命令,用镜像数据在数据库创建相应的数据表

用migrate将映像数据写入数据库常见问题01_数据_02

我们会发现系统提示们没有需要迁移的新数据。但数据库里在migrate前后都没有生成与之相关的数据表

用migrate将映像数据写入数据库常见问题01_数据库_03

解决方案

这个现象一般并不是代码有影响正常运行的问题,主要原因是之前手动在数据库中删除了映射数据对应的数据表,再次运行makemigrations和migrate命令时,migrate判断不了之前生成的数据表已被手动删除,所以反馈操作结果为没有需要写入的映射数据。这时如果还没有写入除列名外的其他数据,最省心的办法就是把数据库文件整体删除,然后再运行migrate命令,即可正常写入相关数据表。运行结果如下:

用migrate将映像数据写入数据库常见问题01_django_04

数据库显示信息:

用migrate将映像数据写入数据库常见问题01_数据库_05


标签:常见问题,verbose,migrate,models,length,01,CharField,True,name
From: https://blog.51cto.com/HiFine/8097663

相关文章

  • P3746 [六省联考 2017] 组合数问题
    看了题解才悟了,我还是太菜了。solution要求\[\left(\sum_{i=0}^\inftyC_{nk}^{ik+r}\right)\bmodp\]这个形式很像生成函数吧。我们套用生成函数:\[G(x)=\sum_{i=0}^{\infty}\begin{pmatrix}nk\\i\end{pmatrix}x^i\]所求即为\[\sum_{i\bmodk=r}[x^i](1+x)......
  • World Tour Finals 2019 D Distinct Boxes
    洛谷传送门AtCoder传送门神题。设第\(i\)个箱子有\(x_i\)个红球,\(y_i\)个蓝球,那么要求找到最大的\(K\)使得\(\sum\limits_{i=1}^Kx_i\leR,\sum\limits_{i=1}^Ky_i\leB\),且\((x_i,y_i)\)两两不等。显然我们都希望\(x_i,y_i\)尽量小。但是当\(R,B\)......
  • CITECT2018R2做WEB发布练习2-安装webserver,配置用户
    这一篇博客我在新浪发表过,地址是CITECT2018R2做WEB发布练习2-安装webserver,配置用户_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里也记录一遍。为了实现citect的web发布功能,需要安装web服务器,我将web服务器和IO服务器、报警服务器等安装在同一台电脑上。需要先安装IIS,这一点......
  • 监控易101:全方位解读运维的核心功能与特性
      在数字化时代,企业IT环境的复杂性日益增加,给运维工作带来了前所未有的挑战。面对这一情况,监控易作为一款一体化运维监控管理平台,凭借其全面的监控覆盖、智能的告警机制、强大的数据分析工具以及灵活的扩展能力,赢得了众多企业的青睐。接下来,我们将深入探讨监控易的各大核心功能......
  • Java流程控制_01分支结构
    1. if分支  2.switch分支switch可以快速找到某个值,不用一个一个找(底层代码)  ......
  • 面向对象(OOP)01~17
    面向对象(OOP)01~171.什么是面向对象​ 1.1物以类聚属性和方法就是类(分类思想)​ 1.2面向对象可以处理复杂为题​ 1.3本质:以类的方式组织代码,以对象的组织(封装)数据,类是对象的模板。​ 1.4三大特性:封装、继承、多态2.回顾方法的定义、调用​ 2.1静态和非静态方法(stat......
  • 论文复现01. RestainNet
    论文名称:RestainNet:aself-superviseddigitalre-stainerforstainnormalizationarxiv: https://arxiv.org/pdf/2202.13804.pdf论文的核心内容:自监督网络,把”灰度图“重新上色成HE染色的效果训练阶段在训练阶段,将原始的RGB图像分别提取Lab空间的L通道和HE染色矩......
  • P4309 [TJOI2013] 最长上升子序列题解
    P4309[TJOI2013]最长上升子序列题解正文单调队列?单调锤子队列!!本题的操作可以省略成:单点修改区间查询好极了,此时我们有两种选择:线段树和树状数组,(平衡树,真不会,下一位因为不需要其他操作,所以我们还是选择更小巧更可爱的树状数组吧。关于vectorvector的insert操作支......
  • windows server 2012 R2 环境下安装 .NerCore
    windowsserver2012R2环境下安装.NerCore 安装步骤如下1,微软官网下载 .NetCore服务器运行环境  Core运行环境下载地址  https://dotnet.microsoft.com/download/dotnet-core   下载对应版本即可!2,安装成功后cmd运行命令dotnet--info如下图 出现版......
  • 01集合结构体系
    :集合体系结构集合分两大类:Collection:单列集合,一次放入一个数据Map:双列集合,一次放入一对数据一、集合分两大类Collection:单列集合,每次添加一个数据。Map:双列集合,每次添加一对数据。二、单列集合集合体系结构图:List系列集合:添加的元素是:有序、可重复、有索引......