1.以管理权限运行cmd
2.选择django 项目路径 D:\python\django\
django-admin startproject mydjango #django项目名称
3.创建django 项目
4.使用pycharm打开
5.创建python app
python manage.py startapp myapp #app名称
6.在__init__.py 中加入
import pymysql
pymysql.install_as_MySQLdb()
7.在setting.py ----------配置 mysql
# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
# }
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #默认sqlite3
'NAME': 'michael', #数据库名
'USER': 'root', #用户名
'PASSWORD': '1111', #数据库密码
'HOST': 'localhost', #数据库服务器ip
'PORT': '3306', # 数据库端口
}
}
8.安装app,在setting.py里面添加
9.添加model,在myapp--->models.py
from django.db import models
# Create your models here.
class Grades(models.Model):
gname = models.CharField(max_length=20)
gdate = models.DateTimeField()
ggirlnum = models.IntegerField()
gboynum = models.IntegerField()
isDelete = models.BooleanField(default=False)
class Students(models.Model):
sname = models.CharField(max_length=20)
sgender = models.BooleanField(default=True)
sage = models.IntegerField()
scontend = models.CharField(max_length=100)
idDelete = models.BooleanField(default=False)
#sgrade = models.ForeignKey('Grades', on_delete=models.CASCADE()) #报错1
sgrade = models.ForeignKey('Grades', on_delete=models.CASCADE)
10.生成迁移文件,并执行
python manage.py makemigrations #生成迁移文件
python manage.py migrate #执行迁移文件
出错1:
sgrade = models.ForeignKey('Grades')
TypeError: __init__() missing 1 required positional argument: 'on_delete'
解决方法: 把models.CASCADE()后边的括号去了
#sgrade = models.ForeignKey('Grades', on_delete=models.CASCADE()) #报错1
sgrade = models.ForeignKey('Grades', on_delete=models.CASCADE)
------------------------------------------------------------------------------------------------------------------------------------------
出错2:是因为 mysqlclient 目前不支持高版本python
File "E:\Python37\lib\site-packages\django\db\backends\mysql\base.py", line 36, in <module>
raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
解决方法: 打开python 安装目录,去除版本检查,如 E:\Python37\lib\site-packages\django\db\backends\mysql\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__)
------------------------------------------------------------------------------------------------------------------------------------------
出错3:
File "E:\Python37\lib\site-packages\django\db\backends\mysql\operations.py", line 146, in last_executed_query
query = query.decode(errors='replace')
AttributeError: 'str' object has no attribute 'decode'
解决方法: 在E:\Python37\lib\site-packages\django\db\backends\mysql\operations.py文件里将query.decode改成query.encode
def last_executed_query(self, cursor, sql, params):
# With MySQLdb, cursor objects have an (undocumented) "_executed"
# attribute where the exact query sent to the database is saved.
# See MySQLdb/cursors.py in the source distribution.
query = getattr(cursor, '_executed', None)
if query is not None:
#query = query.decode(errors='replace')
query = query.encode(errors='replace')
return query
若出现 No changes detected
解决方法:
python manage.py makemigrations --empty myapp
执行成功图
查看数据库