我们每次启动django都要输入命令python manage.py runserver这样是非常不方便的,于是我们就可以利用PyCharm来配置一下快速启动
打开PyCharm点开Edit Configurations
然后配置好你的启动项目
然后每次要启动项目点击运行就可以了
内容全部基于Python3.7和Django2.2
python3连接Mysql模块:pip install pymysql
我们由django的settings的配置文件知道默认数据库是sqlite3,所以我们只需要更改配置就好了
在__init__.py添加配置
import pymysql
pymysql.install_as_MySQLdb()
更改settings中的配置
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql',
'NAME': 'python',
'HOST': 'localhost',
'PORT': '3306',
'USER': 'root',
'PASSWORD': '123'
}
}
然后我们发现启动项目就会报错了,因为python3和django2的版本问题
首先我们会遇见这个问题,告诉你版本问题
查阅官网文档后得知,这主要是django2.2内部的一个版本限制在作怪,所以我们需要进入python的文件夹,我这里是:E:\install\python3.7\Lib\site-packages\django\db\backends\mysql\base.py我们把base.py里面的两行代码注释就ok了
model.py
from django.db import models
# Create your models here.
class Person(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=200, blank=True, null=True)
pwd = models.CharField(max_length=200, blank=True, null=True)
def __str__(self):
return self.name
我们把应用挂载到settings里
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'person'
]
我们准备创建一个app:python manage.py start person
然后它又报错,报我的编码问题
我又查阅文档得知,python3和Python2在套接字返回值解码上的区别
python2是用decode,python3是用encode,而下载的默认文件里面是decode,所以我们需要自己手动改
E:\install\python3.7\Lib\site-packages\django\db\backends\mysql\operations.py
进入operations.py文件中,把decode修改为encode,问题就解决了
然后应用生成了,我准备生成表
python manage.py makemigrations 创建迁移文件,
python manage.py migrate 建表
迁移文件成功生成没问题,然后我建表的时候又出现问题了…
django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table ((1064, “You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
for the right syntax to use near ‘(6) NOT NULL)’ at line 1”))
它又报我的mysql版本问题,查阅文档后又得知,Django2.1以上不再支持MySQL5.5,必须5.6版本以上,而我还是5.5的…
解决方案:
二选一
(1)Django降级到2.0
pip install Django==2.0.0 -i https://pypi.douban.com/simple
(2)MySQL升级