django mysql应用_Django mysql应用

环境:python3、Django2

1、安装驱动mysqlclient

pip3 install mysqlclient

2、创建一个数据库

CREATE DATABASE database_name CHARACTER SET UTF8; 指定数据库的编码utf8

3、创建项目

django-admin startproject myweb #建立项目

cd myweb

django-admin startapp myapp #建立项目下属APP

4、APP下的models.py文件中加入表结构(django中之所以把表结构在自身文件中定义,是为了在其他文件中可直接引用表结构进行数据库操作,不用频繁刷新数据表获取表结构)

from django.db importmodels#Create your models here.

classbook_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)

classsite_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连接信息

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中

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

7、数据表操作-增删改查,请参考mysql 连接 django

8、Django连接mysql出错

错误一: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~ 不再报错

参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值