环境:python三、Django2html
一、安装驱动mysqlclientpython
pip3 install mysqlclient
二、建立一个数据库mysql
CREATE DATABASE database_name CHARACTER SET UTF8; 指定数据库的编码utf8
三、建立项目linux
django-admin startproject myweb #创建项目 cd myweb django-admin startapp myapp #创建项目下属APP
四、APP下的models.py文件中加入表结构(django中之因此把表结构在自身文件中定义,是为了在其余文件中可直接引用表结构进行数据库操做,不用频繁刷新数据表获取表结构)web
from django.db import models # Create your models here. class book_info(models.Model): fromuser = models.CharField(max_length=30, default='WYS') fromsite = models.CharField(max_length=50) bookname = models.CharField(max_length=50) #updatetime = models.DateTimeField() #lastchapter = models.CharField(max_length=100) class site_info(models.Model): sitename = models.CharField(max_length=50) bookname = models.CharField(max_length=50) url = models.CharField(max_length=200) updatetime = models.DateTimeField() lastchapter = models.CharField(max_length=100)
5.在myweb/myweb/settings.py中加入建立的APP和MYSQL链接信息sql
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'myapp', )
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test', 'USER': 'test', 'PASSWORD': 'test', 'HOST': 'localhost', 'PORT': '3306', } }
6.将models.py中的数据库表结构同步到MYSQL中shell
python manage.py migrate #建立表结构 python manage.py makemigrations myapp #告诉django,myapp中的表结构有更新 python manage.py migrate myapp #执行myapp中的表结构到mysql中
数据库中的表名为myapp_book_info,myapp_site_info,但django代码中调用时的表名为models.py中定义的表名book_info,site_info数据库
七、数据表操做-增删改查,请参考mysql 链接 djangodjango
八、Django链接mysql出错vim
错误一:No module named 'MySQLdb'
缘由:python3链接MySQL不能再使用mysqldb,取而代之的是pymysql。
解决方法:在python的MySQL包中,即路径:C:\Users\adong\AppData\Local\Programs\Python\Python36\Lib\site-packages\Django-2.0.3-py3.6.egg\django\db\backends\mysql
下的__init__.py文件中加入:
import pymysql
pymysql.install_as_MySQLdb()
错误二:django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None
缘由:在解决了错误一之后出现了此错误。
解决方法:在python的MySQL包中,即路径:C:\Users\adong\AppData\Local\Programs\Python\Python36\Lib\site-packages\Django-2.0.3-py3.6.egg\django\db\backends\mysql
# 找到base.py文件,注释掉 base.py 中以下部分(35/36行) if version < (1, 3, 3): raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)
此时仍会会报错,报错信息以下:
AttributeError: ‘str’ object has no attribute ‘decode’
#找到operations.py文件(146行),将decode改成encode #linux vim 查找快捷键:?decode if query is not None: query = query.decode(errors='replace') return query #改成 if query is not None: query = query.encode(errors='replace') return query
OK~ 再也不报错
参考: