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命令,显示结果如下:
后台生成映像文件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前后都没有生成与之相关的数据表
解决方案
这个现象一般并不是代码有影响正常运行的问题,主要原因是之前手动在数据库中删除了映射数据对应的数据表,再次运行makemigrations和migrate命令时,migrate判断不了之前生成的数据表已被手动删除,所以反馈操作结果为没有需要写入的映射数据。这时如果还没有写入除列名外的其他数据,最省心的办法就是把数据库文件整体删除,然后再运行migrate命令,即可正常写入相关数据表。运行结果如下:
数据库显示信息:
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
什么是队列 队列是一种先进先出的数据结构,类似食堂排队打饭,先入队的元素当然要先出队,先请用Python列表模拟队列。现有一列表 queue = [1, 2, 3, 4, 5] 被视作队列,请使用pop函数连续两次取出队首元素,再使用append函数将输入元素…