ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Django使用Mysql数据库以及自动建表

2021-11-06 22:30:48  阅读:348  来源: 互联网

标签:__ False name self py Django Mysql 建表 verbose


settings.py中如下配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 用什么数据库驱动
        'NAME': 'nebulablog',  # 数据库名字
        'USER': 'root',  # 用户名就是mysql -u后面的
        'PASSWORD': 'root',  # 对应的密码
        'HOST': '127.0.0.1',  # 就是localhost
        'POST': 3306,  # mysql默认为3306,如果自己配置过mysql端口,需要改成自己配的
    }
}

在项目与settings.py同级目录新建models.py。名字一定要起对,末尾有s
然后在里面写好自己的实体:

from django.db.models import CharField, ImageField, Model
from django.db.models.fields import (
    AutoField, BigAutoField, BigIntegerField, BooleanField,
    DateTimeField, SmallIntegerField, TextField, Field, IntegerField
)


class FixedCharField(Field):  # 定义一些字段类型
    def __init__(self, *args, **kwargs):
        super(FixedCharField, self).__init__(*args, **kwargs)

    def db_type(self, connection):
        return 'char(%s)' % self.max_length


class UIntField(IntegerField):
    def __init__(self, *args, **kwargs):
        super(IntegerField, self).__init__(*args, **kwargs)

    def db_type(self, connection):
        return 'integer(%s) UNSIGNED' % self.max_length  # 但mysql中长度与存储字节数无关


class User(Model):
    id = BigAutoField(verbose_name='账号', primary_key=True)  # 自增长型主键
    name = FixedCharField(max_length=20, null=False, blank=False, verbose_name='昵称')
    isAuthor = BooleanField(null=False, default=False, verbose_name='是否可以写blog')
    banned = BooleanField(null=False, default=False, verbose_name='已经禁用')
    # BooleanField在数据库中是TINYINT(1)
    deleted = BooleanField(null=False, default=False, verbose_name='已经删除')
    create_time = DateTimeField(null=False, verbose_name='创建时间')


class UserInfo(Model):
	# user外键,这里可以用OneToOneField但是那将让Django自动创建一个外键,外键不是什么情况下都受欢迎的,有时候还是会用代码逻辑来代替外键
    id = BigIntegerField(verbose_name='账号', primary_key=True)  
    domain = CharField(verbose_name='域名', max_length=255, blank=False, null=False)  # 没错,域名就有这么长
    post = FixedCharField(max_length=32, blank=False, null=False, verbose_name='电子邮局地址')
    phone = FixedCharField( verbose_name='手机号', max_length=15, blank=False)
    
...

执行以下命令:

python manage.py makemigrations <名字>

之后,项目目录发生改变:

  • 标签:__,False,name,self,py,Django,Mysql,建表,verbose
    来源: https://blog.csdn.net/dscn15848078969/article/details/121185076

    本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
    2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
    3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
    4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
    5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有