ubuntu系统Django中连接Mysql数据库(python3版本)

前提安装:

  • 系统中Mysql
  • 虚拟环境中安装了django框架

步骤:

1 、在虚拟环境中安装了pymysql驱动包

pip install pymysql

2 、在包的__init__.py文件中加入以下两行:

import pymysql
pymysql.install_as_MySQLdb()

3 修改 setting.py 文件并设置数据库使用mysql:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'djTest',			# djTest是本地数据库名,需要提前建好
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': '3306',	#根据自己设定的mysql端口设定
    }
}

4 、修改models.py建立任务
参考代码:

from django.db import models

# Create your models here.

# 必须要继承django中的models.Model 才是模型類 不然就是普通類,無法和數據庫做映射關系
class BookInfo(models.Model):
    """"在模型類中直接定義自己的成員"""

    # 字段的類型 必須是models中已經定義的類型
    btitle = models.CharField(max_length=20)

    bauthor = models.CharField(max_length=10, null=True)

    # 類屬性 相當於 數據庫中的 table表中的字段
    bpub_date = models.DateField()

    def __str__(self):
        return self.btitle    # 在 python2中 需要轉換編碼 return self.btitle.encode('utf-8')

class HeroInfo(models.Model):
    hname = models.CharField(max_length=10)
    hgender = models.BooleanField()
    hcontent = models.TextField()

    # 注意:在django中,不需要定義id,此處爲外鍵oo
    hbook = models.ForeignKey(BookInfo)
    def __str__(self):
        return self.hname

注意:一个任务里面里可以包含多个类,每个类相当于数据库中的一个数据表

6、 迁移操作

  • 注册任务
      仅首次迁移时需要操作,将任务名添加到注册到setting.py中INSTALLED_APPS元组里面,如下所示:
    ubuntu系统Django中连接Mysql数据库(python3版本)_第1张图片
  • 生成迁移
 python manage.py makemigrations

  执行以上命令会在当前任务里的migrations文件夹下 会在migrations 的文件夹下面生成一个initial.py 文件,将models.py中对象映射成initial.py中的关系

  • 执行迁移
python manage.py migrate

  效果:执行上一步生成的迁移文件,在对应的数据库中生成了若干个数据表,数目为默认表(7个)和自定义表,自定义表(tables)的表名格式为:任务名_任务中定义的类名, 如下所示:
ubuntu系统Django中连接Mysql数据库(python3版本)_第2张图片
注意:
  当后期需要重新添加数据表的字段,需要重新执行第第七步,只是不需要重新注册,每次迁移,会生成新的迁移文件,执行迁移的时候,也是只会执行新生成的迁移文件。但是仅仅在models中的某个类里添加修改函数,不需要重新执行第七步。

8、 其他略

注意:

  在建立数据库的时候,应当生声明数据库的字符集,“create database Test chartset=utf8”, 因为Mysql数据库字符集默认是Latin,所以当后台往数据库中添加中文信息的时候,会出现错误`1366, "Incorrect string value:,
点击即可查看参考解决方法

你可能感兴趣的:(python,django,Mysql)