Django 连接数据库
配置数据库
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'