- 建立MySQL数据库
create database bj18 charset=uft8;
use bj18;
2.创建项目
workon py3
django-admin startproject test2
3.创建应用
python manage.py startapp booktest
4.注册应用,修改语言时区
# LANGUAGE_CODE = ‘en-us’
LANGUAGE_CODE = ‘zh-hans’
中文
#TIME_ZONE = ‘UTC’
#中国时区
TIME_ZONE = ‘Asia/Shanghai’
INSTALLED_APPS = [
‘booktest’,
]
5.修改使用数据库类型
DATABASES = {
‘default’: {
#‘ENGINE’: ‘django.db.backends.sqlite3’, #注释掉这一行
加上下面内容
‘ENGINE’: ‘django.db.backends.mysql’,
#‘NAME’: os.path.join(BASE_DIR, ‘db.sqlite3’)
‘NAME’:‘bj18’, #数据库必须手动创建
‘USER’:‘root’,
‘PASSWORD’:‘123’,
‘HOST’:‘localhost’,
‘PORT’:3306,
}
}
-
启动服务器
python manage.py runserver
发现 ‘no module named MYSQLdb’ -
安装pymysql
pip list 发现没有
pip install pymysql -
在__init__.py中 加上
import pymysql
pymysql.install_as_MySQLdb()
9.启动python manage.py runserver服务器的时候又发现问题
由于 mysqlclient 目前不支持高版本python,出现这个错误之后可以根据错误提示找到文件位置,打开 base.py 文件,找到以下代码:
version = Database.version_info
if version < (1, 3, 13):
raise ImproperlyConfigured(‘mysqlclient 1.3.13 or newer is required; you have %s.’ % Database.version)
将 if 语句注释掉之后在执行命令就不会再报错
version = Database.version_info
if version < (1, 3, 13):
raise ImproperlyConfigured(‘mysqlclient 1.3.13 or newer is required; you have %s.’ % Database.version)
找了半天都找不到base.py 在哪里,最后才发现报错的地方有路径,顺着路径就能找到
之后还有一个问题:
AttributeError: ‘str’ object has no attribute ‘decode’
/home/mm/.virtualenvs/py3/lib/python3.6/site-packages/django/db/backends/mysql/operations.py
line 146, 把decode 改成encode
10.在model.py里建立模型类
from django.db import models
class BookInfo(models.Model):
btitle = models.CharField(max_length=20)
bpub_date = models.DateField()
# 阅读量
bread = models.IntegerField(default=0)
bcomment = models.IntegerField(default=0)
# 删除标记.软删除标记
isDelete = models.BooleanField(default=False)
class HeroInfo(models.Model):
hname = models.CharField(max_length=20)
hgender = models.BooleanField(default=False)
hcomment = models.CharField(max_length=200)
# 关系属性
hbook = models.ForeignKey(to=BookInfo, on_delete=models.CASCA