前言:
今天咱们对“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