龙空技术网

python的Django+Mysql框架爬坑攻略(1)

Tsatnt 433

前言:

今天咱们对“django使用mysql”大概比较关切,各位老铁们都想要分析一些“django使用mysql”的相关内容。那么小编同时在网摘上网罗了一些关于“django使用mysql””的相关文章,希望小伙伴们能喜欢,兄弟们快快来了解一下吧!

研习了一段时间python,发现django框架在web平台方面比较合适,钻研了两个月,,略懂了一些皮毛,,总结了一些经验,贴在这里,大家分享,大牛请自动忽略。

所属经验只是解决方案之一,由于本人也是菜鸟,欢迎大神拍砖。

由于是之前爬坑时随手做的笔记,,格式比较乱,还望谅解。

下图是网上找的,觉得十分可爱,版权归原作者

1、创建django项目

(1)用pycharm创建

(2)项目根目录下的应用创建

在项目根目录下cmd中输入:python manage.py startapp 应用名

添加应用名到settings.py中的installed_apps中

应用中各部分介绍:

views.py 大部分的访问请求都要通过该模块响应,所以我们的大部分代码都集中在这里。

(3)各文件介绍

“项目名/项目名/”下有:

_init_.py -->记得加入处理mysql连接的语句

index.py(我自己建的)

settings.py :在installed_apps部分要加入自己创建的应用名,database部分设置好与mysql的连接,static部分加上staticfiles_dirs

urls.py :在urlpatterns部分设置好要访问的url和views中函数的对应关系

wsgi.py:一般不要动

新建一个应用,下面会有:

migrations文件夹:暂时不要动;‘

_init_.py:暂时不要动

admin.py:

apps.py:

forms.py: 我自己加的

models.py: 如果需要创建数据表就要在这里面写,然后用python manage.py makemigrations和python manage.py migrate在mysql数据库中生成真实的表。

tests.py:

urls.py:我自己加的

views.py: 可获取models中定义的表的数据,import models,...

2、安装mysql server

网上攻略很多,不载累述

3、创建数据库和用户

进入mysql数据库目录:C:\Program Files (x86)\MySQL\MySQL Server 5.7\bin>

输入mysql -h localhost -u root -p进入数据库

密码:123456

mysql>create database 数据库名;

mysql>create user 用户名@localhost identified by '123456';

mysql>grant all privileges on 数据库.* to 用户名@localhost;

Ctrl+z退出

4、设置数据库连接

如遇到如下问题

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.

Did you install mysqlclient?

解决方案:

(1) 安装pymsql

pip install pymysql

(2) 安装完毕,打开项目的_init_.py,添加代码:

import pymysql

pymysql.install_as_MySQLdb()

5、创建数据表(数据迁移)

(1)选择某个应用

(2)在其models.py中定义表结构,

(3)在其admin.py中注册表

(4)数据迁移:python manage.py makemigrations 应用名 python manage.py migrate 如出现RuntimeError: cryptography is required for sha256_password or .... 执行如下操作: 1). ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则 2).ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码 3).FLUSH PRIVILEGES; #刷新权限 4).再重置下密码:alter user 'root'@'localhost' identified by '123456';

6、安装captcha

pip install django-simple-captcha

settings.py配置,加入captcha

INSTALLED_APPS = [

'captcha',

]

urls.py配置

加入url

from django.urls import path,include

path('captcha', include('captcha.urls')),

————————————————

错误一: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 文件中,注释掉一下两行代码

if version < (1, 3, 3):

raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)

)

settings.py文件中修改数据库配置为下面的内容:

# Database

#

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql',

'HOST': '127.0.0.1',

'PORT': '3306',

'NAME': 'mysql',

'USER': 'root',

'PASSWORD': 'zwg123456',

'OPTIONS': {

'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",

},

}

}

驱动(ENGINE)、主机地址(HOST)、端口号(PORT)、数据库(NAME)、用户名(NAME)以及登录密码(PASSWORD);

二、在__init_.py文件添加如下配置:

# coding=utf-8

import pymysql

pymysql.install_as_MySQLdb()

因为Django连接MySQL时默认使用MySQLdb驱动,但MySQLdb不支持Python3,因此这里将MySQL驱动设置为pymysql。

三、执行数据迁移

在项目manage.py路劲下执行如下命令即可

python manage.py makemigrations

python manage.py migrate

————————————————

在利用models.py文件生成数据库表之前,我们需要手动的先创建数据库:

mysql> create database django_mysql;

创建完django_msql库之后,我们在终端执行如下命令,他的作用是将models文件生成一个迁移文件

python3 manage.py makemigrations

迁移文件生成完毕,执行

python manage.py migrate django.db.utils.InternalError: (1060, "Duplicate column name 'user_id'") 一直出现这个问题,删除了migration文件里面的除了__int__.py以外的所有文件,继续执行,python manage.py migration,解决。 如果还不行,就用以下指令: python manage.py migrate --fake 这个解决问题 ————————————————

7、从mysql数据库中查询数据展示在网页

实现逻辑:

用户访问html页面,urls.py负责找到相应的views中的函数,views中的函数负责提供数据用于展示在页面。

(1)在views.py中

import models

8

views中的函数,get:第一次转到该页面;post:提交该页面。

标签: #django使用mysql