Django mysql应用

环境: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~ 再也不报错

 

参考:

一、mysql 链接 django

二、django+mysql简单总结

三、编写你的第一个 Django 应用,第 2 部分

四、Django链接MySQL出错

五、Ddjango2.2/mysql ImproperlyConfigured: mysqlclient

相关文章
相关标签/搜索