Django 连接数据库

时间:2021-07-18 19:18:05

配置数据库

Django 默认连接的是SQLite,如果想要连接MySQL则需修改配置:在 setting.py 中找到数据库的默认配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

修改为:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '数据库名',
        'USER': '用户名',
        'PASSWORD': '密码',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

Django 默认使用 MySQLdb 模块链接 MySQL,但 MySQLdb 目前不支持 python3,所以使用 pymysql 代替 MySQLdb:
在 project 同名文件夹下的 init.py 文件中添加如下代码即可:

import pymysql
pymysql.install_as_MySQLdb()

创建类

1.建表

from django.db import models

# app01_userinfo    # Django 会在数据库中以 (app名_表名) 建表
class UserInfo(models.Model):
    id = models.AutoField(primary_key=True)   # 主键,自动填写(自增数字,如果没有指明主键Django也会自动添加这样一列作为主键)
    username = models.CharField(max_length=32, null=False)
    password = models.CharField(max_length=64, null=False)
    type = models.CharField(max_length=32, null=False, default='用户')
    email = models.EmailField(max_length=32, null=True, default=None)

2.注册APP
在 setting.py 文件中,找到以下列表,在最后添加上你的 app 名

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01',
]

3.执行命令

python manage.py makemigrations
python manage.py migrate

执行时可能会报错,错误和解决办法:
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
AttributeError: 'str' object has no attribute 'decode'