首页 > 代码库 > Django补遗(一)

Django补遗(一)

链接MYSQL数据库

修改项目中的配置文件:

DATABASES = {
    default: {
        # ‘ENGINE‘: ‘django.db.backends.sqlite3‘,
        # ‘NAME‘: os.path.join(BASE_DIR, ‘db.sqlite3‘),
        ENGINE:django.db.backends.mysql,
        NAME:llll, #所应用的MYSQL数据库名称
        USER:root, #MYSQL用户名
        PASSWORD:1232222, # MYSQL密码
        HOST:127.0.0.1, # MYSQL地址
        PORT:3306   # MYSQL数据库的端口号 
    }
}

NAME  即数据库的名字,在mysql连接前该数据库必须已经创建。
USER  和  PASSWORD  分别是数据库的用户名和密码。
设置完后,再启动我们的Django项目前,我们需要激活我们的mysql。
然后,启动项目,会报错:no module named MySQLdb。
这是因为django默认你导入的驱动是MySQLdb,可是MySQLdb对于py3有很大问题,所以我们需要的驱动是PyMySQL。
所以,我们只需要找到项目名文件下的__init__,在里面写入:

import pymysql
pymysql.install_as_MySQLdb()

问题解决!

linux操作系统查看数据库地址及端口号:

SHOW VARIABLES;
SHOW GLOBAL VARIABLES LIKE PORT;

 如果出现以下错误,则修改数据库中用户密码后再执行makemigrations

access denied for user root@localhost(using password:YES)

修改数据库用户密码

mysql> SET PASSWORD FOR 用户名@localhost = PASSWORD(新密码);

 再链接就好

Model字段

class Customer(models.Model):
    ‘‘‘客户信息表‘‘‘
    name = models.CharField(max_length=32, blank=True, null=True,verbose_name="姓名")
    # blank null  成对出现 只要出现null就写上blank 不然django提交表单时不会通过 提示输入框不能为空
    qq = models.CharField(max_length=64, unique=True,verbose_name="QQ")
    # unique 设置该字段唯一  数据不能重复   verbose_name 设置在django admin中显示的中文

    source_choices = ((0, 转介绍),
                      (1, QQ群),
                      (2, 官网),
                      (3, 百度推广),
                      (4, 51CTO),
                      (5, 知乎),
                      (6, 市场推广)
                      )

    source = models.SmallIntegerField(choices=source_choices,verbose_name="客户来源")
    # choices= 元组   只能插入元组内的元组中的第一个数据

    referral_from = models.CharField(verbose_name="介绍人QQ", max_length=64, blank=True, null=True)

    consult_course = models.ForeignKey("Course", verbose_name="咨询课程")
    content = models.TextField(verbose_name="咨询详情")
    tags = models.ManyToManyField("Tag", blank=True, null=True,verbose_name="标签")
    consultant = models.ForeignKey("UserProfile",verbose_name="销售顾问")
    memo = models.TextField(blank=True, null=True,verbose_name="备注")
    date = models.DateTimeField(auto_now_add=True,verbose_name="日期")
    # auto_now_add 插入数据时自动添加当前时间

    def __str__(self):
        return self.qq

    class Meta:
        verbose_name_plural = "客户信息表"
        # 在django admin 中表的中文名称

        unique_together = (qq, name)
        # # 联合唯一 qq字段 和 name字段

 

Django补遗(一)