• django如何连接sqlite数据库?
  • 发布于 2个月前
  • 201 热度
    0 评论
新手学习django创建数据库时,经常因为设置不当或者操作步骤不对而状况百出。这里梳理一下主要步骤和注意重点和大家共同学习。这里以sqlite数据库为例。

首先,在创建完成项目和项目文件后,要将创建的文件添加到settings.py文件中的INSTALLED_APPS列表中,完成新建文件注册。

第二步,编写models.py文件。这一步尤其要注意代码书写细节,一个单词或者标点符号写错就会造成映射文件生成错误。例如:choices不要漏掉s,length不要写成lenght等等。
from django.db import models
# Create your models here.
# 堆代码 duidaima.com
class Department(models.Model):
'''部门表'''
title = models.CharField(verbose_name='标题',max_length=16)

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,'女')])
age = models.PositiveIntegerField(verbose_name='年龄',null=True,blank=True)
department = models.ForeignKey(verbose_name='部门',to='Department',on_delete=models.CASCADE)

class Phone1(models.Model):
'''号码表'''
mobile = models.PositiveIntegerField(verbose_name='号码')
price = models.SmallIntegerField(verbose_name='价格',default=0)
level = models.SmallIntegerField(
verbose_name='级别',
choices=[(1,'1级'),(2,'2级'),(3,'3级')],
default=1
)
status_choice =[(1,'已使用'),(2,'未使用')]
status = models.SmallIntegerField(verbose_name='状态',choices=status_choice,default=1 )
admin = models.ForeignKey(verbose_name='管理员',to='Admin',on_delete=models.CASCADE)
第三步,生成迁移映像数据。这一步是调用生成了数据库db.sqlite3和可供迁移的数据而并非用影像数据生成了带有数据的数据库。

生成的可供迁移的数据0001_initial.py详细内容如下:

# Generated by Django 4.1.5 on 2023-10-28 13:49
# 堆代码 duidaima.com
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, '女')], 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='Phone1',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('mobile', models.PositiveIntegerField(verbose_name='号码')),
                ('price', models.SmallIntegerField(default=0, verbose_name='价格')),
                ('level', models.SmallIntegerField(choices=[(1, '1级'), (2, '2级'), (3, '3级')], default=1, verbose_name='级别')),
                ('status', models.SmallIntegerField(choices=[(1, '已使用'), (2, '未使用')], default=1, verbose_name='状态')),
                ('admin', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.admin', verbose_name='管理员')),
            ],
        ),
        migrations.AddField(
            model_name='admin',
            name='department',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.department', verbose_name='部门'),
        ),
    ]
最后,运行migrate命令将映像数据写入到数据库

查看数据库,新建的admin、department和phone1三个数据表已经生成。

用户评论