• 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字段
  • 相关阅读:
    如何在Kubernetes集群动态使用 NAS 持久卷
    如何在Kubernetes集群动态使用 NAS 持久卷
    谷歌浏览器报错Unchecked runtime.lastError: The message port closed before a response was received.。
    优化信息流很麻烦?三招教你轻松搞定
    优化信息流很麻烦?三招教你轻松搞定
    java多线程
    java多线程
    酷狗音乐快速转换MP3格式的方法
    Golang项目部署
    解析HTML、JS与PHP之间的数据传输
  • 原文地址:https://www.cnblogs.com/idontknowthisperson/p/6179633.html
Copyright © 2020-2023  润新知