在修改settings.py同级的__init__.py文件:
#告诉Django用pymysql来连接数据库
import pymysql
pymysql.install_as_MySQLdb()
注意:把sqlite3数据库修改为mysql数据库一定到在setting.py目录下的initial.py文件下添加如上代码
demo1/app_01/models.py文件中:
#一个类代表这一个表
class test(models.Model):
#在表中添加name字段
name = models.CharField(max_length = 20)
在cmd或者终端中输入命令:
# 让 Django 知道我们在我们的模型有一些变更
#生成迁移,生成sql脚本
python manage.py makemigrations
# 创建表结构
#执行迁移,根据迁移文件创建表
python manage.py migrate
#创建表示会加上app的名称,如果表里没用主键Django会自动创建id的主键
##可以增加的操作 创建超级管理员
在命令行窗口输入:python manage.py createsuperuser
注意:在创建超级管理员之前,你还得现在数据库创建一下基本的表,否则超级管理员也无法创建,需要运行: python manage.py migrate
新建成功工程后views.py文件里是空的,需要自己编写业务逻辑
from django.shortcuts import HttpResponse # 导入HttpResponse模块
def hello(request): # request是必须带的实例。类似class下方法必须带self一样
return HttpResponse("Hello Django!!") # 通过HttpResponse模块直接返回字符串到前端页面
from django.contrib import admin
from django.urls import path
from app_01 import views
urlpatterns = [
path('',views.hello,name='hello'),
path('admin/',admin.site.urls),
]
terminal下执行 python manage.py runserver 这样执行默认的路径是127.0.0.1:8080
指定端口或地址就再后面写上,如:python manage.py runserver 127.0.0.1:8888
然后浏览器访问http://127.0.0.1:8888
主路由与子路由
1.子路由(独立路由)
独立路由(子路由):将每个应用中的路由系统写自己的app应用的urls.py 文件中(需要自己创建)。
之前我们将所有的路由都放到了主urls当中,django支持我们在每个app应用中编写自己的子路由(url)
(1)、编写自己的子路由
(2)主路由包含子路由
首先导入from django.urls import include
使用 path(‘一般是应用名称’ ,include(‘应用名称.urls’))
主路由中一般放共用的路由系统。
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('app01/',include('app01.urls')),
]
(3)访问路径时,主路径+子路径
由于Django中是默认使用SQLite数据库的,在settings.py文件中的默认配置如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
但是,我需要配置数据库为mysql,该怎么办呢?
创建mysql数据库
1、检查本机是否安装Mysql
ctrl+r 快捷键打开cmd
输入 services.msc
查看服务列表中有无mysql服务
如果有服务,那就代表已经安装了。如果没安装,请参考安装mysql链接:
https://www.cnblogs.com/zhangkanghui/p/9613844.html
安装包地址:https://dev.mysql.com/downloads/mysql/
下载完成后,选择一个磁盘内放置并解压。
2020年2月14日,mysql官网进不去了,好吧那就来个镜像,总没问题了,如果官网龟速下载,建议使用下面的镜像巨快
Mysql国内镜像:http://mirrors.sohu.com/mysql/MySQL-8.0/
安装教程
1. 配置环境变量
变量名:MYSQL_HOME
变量值:E:\mysql-5.7.20-winx64
2. 生成data文件
以管理员身份运行cmd
进入E:\python\mysql\mysql-8.0.12-winx64\bin>下
执行命令:mysqld --initialize-insecure --user=mysql 在E:\python\mysql\mysql-8.0.12-winx64\bin目录下生成data目录
3. 安装MySQL
继续执行命令:mysqld -install
4. 启动服务
继续执行命令:net start MySQL
5. 登录MySQL
登录mysql:(因为之前没设置密码,所以密码为空,不用输入密码,直接回车即可)
E:\python\mysql\mysql-8.0.12-winx64\bin>mysql -u root -p
6. 查询用户密码
查询用户密码命令:mysql> select host,user,authentication_string from mysql.user;
7. 设置(或修改)root用户密码
mysql> use mysql
提别注意:下面这个修改密码的方式不正确,可能是因为版本问题。最近解决了。
mysql> update mysql.user set authentication_string=(“123456”) where user=“root”;
解决方案如下:
mysql> ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
mysql> flush privileges;
#作用:相当于保存,执行此命令后,设置才生效,若不执行,还是之前的密码不变
8. 退出
mysql> quit
Bye
9. 再次登录
解决问题!!!
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
关于修改密码再次登录出现ERROR的解决方案:
首先问题出现的原因在于可能是因为版本不同,命令有所差异。个人认为,其实无所谓了,最终问题解决了就是了。
如果你是按照上面的完整教程安装出现这种问题的解决方案:
1、所有东西都删除,然后重装,按照上面教程再来一遍;部分内容有更正。特别注意!
2、如果你之前装了,报错之后就一直放在那里,现在请严格按照下面步骤进行:
a. 打开cmd,切换到mysql的bin目录下,输入命令 net stop mysql,停止mysql服务;
b. 打开mysql的安装目录,找到data文件夹,将其删除!
c. 回到cmd命令窗口,输入mysqld -remove
d. 接下来按照上面教程,从第二步生成data文件开始执行,一定要注意修改密码那里:
mysql> ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
mysql> ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
mysql> ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
然后就可以愉快使用密码登录mysql了。
确保有安装mysql之后,我们就来创建数据库:
1、ctrl+r 快捷键,打开运行窗口,输入cmd,点击确定
2、命令行里输入:
mysql -uroot -p123456
create database proName
mysql -uroot -p123456 创建一个数据库,用户名为root,密码为123456
proName 为表名
另外可以使用 create database 数据库名; 创建数据库。
create database MyDB_one;
3、如果想在命令行里执行 mysql命令(非必须,根据自己需要),则需要配置环境变量
我的电脑–》属性—》高级系统设置–》环境变量–》新建环境变量
变量名:MYSQL_HOME
变量值:E:\soft\after\mysql-8.0.18-winx64\ (此为你mysql的安装路径。可从服务的属性里查看)
配置setting 文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
# 'NAME': os.path.join(BASE_DIR, 'db.mysql'),
'NAME': 'proName',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
###这样的方法有一个弊端就是你的数据库和密码都暴露出来了,有很大的安全隐患,所以建议大家用下面的这种方法,提前配置好用户名和密码。
首先,在终端打开配置的文件:sudo vim ~/.bashrc
在文件的末尾加上两行:export DATABASE_PWD = 用户密码
export DB_USER = 用户密码
接着,我们在去settings.py文件中导入一个包:from os import environ
最后,在我们配置数据的位置,配置数据,只是这次可以把用户名和密码用其他方式代替。
至此,就完成了配置
使用pymysql模块连接mysql数据库
python环境默认模块MySQLdb只适用于python2.x,pip装不上。它在python3版本的替代品是pymysql:import pymysql
即 Python3不支持MySQLdb,可用pymysql代替
因此:
将Django默认使用MySQLdb连接数据库 更改为 使用pymysql连接数据库
习惯在与项目同名的文件夹下的 init.py 文件中添加
import pymysql
pymysql.install_as_MySQLdb()
安装命令仅供参考:
pip install mysqlclient
pip install pymysql (如果使用python3.x版本时,用pymysql替换MySQLdb,或者用mysqlclient替换MySQLdb。)
Python3.x版本:Pip install mysqlclient
Python2.x 版本:pip install mysql-python
配置完成,以下步骤为数据迁移
在app下的models.py下写model
ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中
体现在django中就是在models.py中,书写类,创建表数据
对应关系如下:
类 —》 表
对象 —》 数据行(记录)
属性 —》 字段
class Author(models.Model):
name = models.CharField(max_length=32) # varchar(32)
pswd = models.CharField(max_length=32) # varchar(32)
参考链接:
https://www.cnblogs.com/maple-shaw/articles/9323320.html
执行数据库迁移的命令
python manage.py makemigrations #为改动创建迁移记录;
python manage.py migrate #将操作同步到数据库。
MySQL 创建数据库和创建数据表
MySQL 是最常用的数据库,在数据库操作中,基本都是增删改查操作,简称CRUD。
在这之前,需要先安装好 MySQL ,然后创建好数据库、数据表、操作用户。
一、数据库操作语言
数据库在操作时,需要使用专门的数据库操作规则和语法,这个语法就是 SQL(Structured Query Language) 结构化查询语言。
SQL 的主要功能是和数据库建立连接,进行增删改查的操作。SQL是关系型数据库管理系统的标准语言。
SQL 语言的作用:
数据定义语言 DDL(Data Definition Language) 。用于创建数据库,数据表。
数据操作语言 DML(Data Manipulation Language) 。用于从数据表中插入、修改、删除数据。
数据查询语言 DQL(Data Query Language) 。用于从数据表中查询数据。
数据控制语言 DCL(Data Control Language) 。用来设置或修改数据库用户或角色的权限。
使用 SQL 操作数据库时,所有的 SQL 语句都以分号结束。(切换数据库时可以不用分号)
在 SQL 语句中,不区分大小写,编写 SQL 语句时可以根据情况用大小写的区别来增加可读性。
二、创建数据库
输入 mysql -u root -p 命令,回车,然后输入 MySQL 的密码(不要忘记了密码),再回车,就连接上 MySQL 了。
mysql -u root -p
最初,都是使用 root 用户登录,工作中如果一直用 root 用户登录,因为权限太大,风险是很大的,所以等创建好权限适合的用户后,就不要经常登录 root 用户了。
使用 show databases; 查看当前安装的 MySQL 中有哪些数据库。
show databases;
刚安装 MySQL 时,默认有四个数据库,information_schema,mysql,perfomance_schema,sys 。通常情况下,我们不会直接使用这四个数据库,但千万不要把这四个数据库删了,否则会带来很多不必要的麻烦。如果不小心删了,建议是重新安装 MySQL ,在重装之前把自己的数据迁移出来备份好,或者从其他服务器上迁移一个相同的数据库过来。
使用 create database 数据库名; 创建数据库。
create database MyDB_one;
创建数据库成功后,数据库的数量变成了5个,多了刚才创建的 MyDB_one 。
使用 create database 数据库名 character set utf8; 创建数据库并设置数据库的字符编码。
create database MyDB_two character set utf8;
直接创建的数据库,数据库的编码方式是 MySQL 默认的编码方式 latin1 (单字节编码) ,通常我们会在数据库中存放中文数据,所以最好把数据库的编码方式设置成 utf-8 ,这样中文才能正常显示。
create database MyDB_three charset utf8;
character set 可以缩写成 charset ,效果是一样的。
使用 show create database 数据库名; 显示数据库的创建信息。
show create database MyDB_one;
show create database MyDB_two;
如果不知道一个数据库的编码方式是什么,可以使用 show create database 数据库名 来查看数据库的编码方式。可以看到刚才创建的 MyDB_one 的编码方式是 MySQL 的默认编码 latin1 ,MyDB_two 的编码方式是 utf-8 。
当然,这种方式不能在创建的同时显示,只能查看一个已经存在的数据库的编码方式。
alter database MyDB_one character set utf8;
如果一个数据库的编码方式不符合使用需求,可以进行修改。刚才创建的 MyDB_one 经过修改后,编码方式也变成了 utf-8 。
使用 use 数据库名 进入或切换数据库。
use MyDB_one
use MyDB_two;
刚连接上 MySQL 时,没有处于任何一个数据库中,如果要使用某一个数据库,就需要进入到这个数据库中。
use 数据库名 这个命令后面的分号可以省略,这是 SQL 语句中唯一可以省略分号的语句。
select database();
创建数据表
使用 show tables;查看当前数据库中有哪些表。
show tables;
在刚才创建的数据库 MyDB_one 中,还没有创建任何表,所以当前是空的。
使用 create table 表名(字段1 字段类型,字段2 字段类型,字段3 字段类型,…); 来创建一张表。
create table Phone_table(pid INT, name CHAR(20), price INT);
在 MyDB_one 中创建了一个叫 Phone_table 的数据表,这张表有三个字段 pid,name,price 。为了增加 SQL 的可读性,字段名我用的是小写,字段类型用大写。
用 show create table 表名; 来显示已创建的表的信息。
show create table Phone_table;
使用 show create table 表名; 可以显示表的字段信息, MySQL 的引擎,和默认的字符编码等信息。与显示数据库信息一样,show 只能显示已经创建了的数据表的信息,不能在创建的同时显示信息。
如果想更好地展示表的字段信息,可以使用 desc 表名; 来显示表的字段信息。
使用 alter table 表名 add 字段名 数据类型; 为已存在的表添加一个新字段。
alter table Phone_table add color CHAR(20);
其他详细的MySQL创建数据库好数据表参考链接:https://blog.csdn.net/weixin_43790276/article/details/102655786
通过以上的资料,可以搭建出一个简单的Django网页,输出“HelloWord”,解决了Django项目的部署流程以及关系型数据库MySQL与Django配置的问题,对Django搭建网页有了基本的认识!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。