devbox
我家小花儿
这个屌丝很懒,什么也没留下!
热门文章
  • 1Elon Musk学习方法研究_elon musk and stanford
  • 2Spring Cloud 学习笔记:Eureka 服务注册与发现_ 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test', #数据库名 'USER': 'root', #数据库用户名 'PASSWORD': '', #数据库密码 'HOST': '127.0.0.1', 'PORT': '3306', } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    在修改settings.py同级的__init__.py文件:

    #告诉Django用pymysql来连接数据库
    import pymysql
    pymysql.install_as_MySQLdb()
    
    
    • 1
    • 2
    • 3
    • 4

    注意:把sqlite3数据库修改为mysql数据库一定到在setting.py目录下的initial.py文件下添加如上代码

    使用数据库

    demo1/app_01/models.py文件中:

    #一个类代表这一个表
    class test(models.Model):
    	#在表中添加name字段
        name = models.CharField(max_length = 20)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在cmd或者终端中输入命令:

    # 让 Django 知道我们在我们的模型有一些变更
    #生成迁移,生成sql脚本
    python manage.py makemigrations
    
    # 创建表结构  
    #执行迁移,根据迁移文件创建表
    python manage.py migrate
    #创建表示会加上app的名称,如果表里没用主键Django会自动创建id的主键
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    ##可以增加的操作 创建超级管理员
    在命令行窗口输入: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模块直接返回字符串到前端页面
    
    • 1
    • 2
    • 3
    • 4

    配置url主路由

    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),
    	]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    运行server并访问

    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
    在这里插入图片描述

    app内部的独立文件

    主路由与子路由
    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')),
    ]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    (3)访问路径时,主路径+子路径
    在这里插入图片描述

    困扰我的MySQL数据库的配置问题

    由于Django中是默认使用SQLite数据库的,在settings.py文件中的默认配置如下:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    但是,我需要配置数据库为mysql,该怎么办呢?

    创建mysql数据库
    1、检查本机是否安装Mysql
    ctrl+r 快捷键打开cmd
    输入 services.msc
    在这里插入图片描述
    查看服务列表中有无mysql服务
    在这里插入图片描述
    如果有服务,那就代表已经安装了。如果没安装,请参考安装mysql链接:
    https://www.cnblogs.com/zhangkanghui/p/9613844.html

    安装MySQL服务

    安装包地址: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;
    
    • 1

    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',
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    ###这样的方法有一个弊端就是你的数据库和密码都暴露出来了,有很大的安全隐患,所以建议大家用下面的这种方法,提前配置好用户名和密码。

    首先,在终端打开配置的文件:sudo vim ~/.bashrc
    在这里插入图片描述
    在文件的末尾加上两行:export DATABASE_PWD = 用户密码

                                        export DB_USER = 用户密码
    
    • 1

    接着,我们在去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()
    
    • 1
    • 2

    安装命令仅供参考:
    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)
    
    
    • 1
    • 2
    • 3
    • 4

    参考链接:
    https://www.cnblogs.com/maple-shaw/articles/9323320.html

    执行数据库迁移的命令

    python manage.py makemigrations #为改动创建迁移记录;
    python manage.py migrate  #将操作同步到数据库。
    
    
    • 1
    • 2
    • 3

    MySQL创建数据库和创建数据表

    MySQL 创建数据库和创建数据表
    MySQL 是最常用的数据库,在数据库操作中,基本都是增删改查操作,简称CRUD。

    在这之前,需要先安装好 MySQL ,然后创建好数据库、数据表、操作用户。

    一、数据库操作语言

    数据库在操作时,需要使用专门的数据库操作规则和语法,这个语法就是 SQL(Structured Query Language) 结构化查询语言。

    SQL 的主要功能是和数据库建立连接,进行增删改查的操作。SQL是关系型数据库管理系统的标准语言。

    SQL 语言的作用:

    1. 数据定义语言 DDL(Data Definition Language) 。用于创建数据库,数据表。

    2. 数据操作语言 DML(Data Manipulation Language) 。用于从数据表中插入、修改、删除数据。

    3. 数据查询语言 DQL(Data Query Language) 。用于从数据表中查询数据。

    4. 数据控制语言 DCL(Data Control Language) 。用来设置或修改数据库用户或角色的权限。

    使用 SQL 操作数据库时,所有的 SQL 语句都以分号结束。(切换数据库时可以不用分号)

    在 SQL 语句中,不区分大小写,编写 SQL 语句时可以根据情况用大小写的区别来增加可读性。

    二、创建数据库

    1. 连接 MySQL

    输入 mysql -u root -p 命令,回车,然后输入 MySQL 的密码(不要忘记了密码),再回车,就连接上 MySQL 了。

    mysql -u root -p
    
    • 1

    最初,都是使用 root 用户登录,工作中如果一直用 root 用户登录,因为权限太大,风险是很大的,所以等创建好权限适合的用户后,就不要经常登录 root 用户了。

    1. 查看当前的数据库

    使用 show databases; 查看当前安装的 MySQL 中有哪些数据库。

    show databases;
    
    • 1

    在这里插入图片描述
    刚安装 MySQL 时,默认有四个数据库,information_schema,mysql,perfomance_schema,sys 。通常情况下,我们不会直接使用这四个数据库,但千万不要把这四个数据库删了,否则会带来很多不必要的麻烦。如果不小心删了,建议是重新安装 MySQL ,在重装之前把自己的数据迁移出来备份好,或者从其他服务器上迁移一个相同的数据库过来。

    1. 创建数据库

    使用 create database 数据库名; 创建数据库。

    create database MyDB_one;
    
    • 1

    在这里插入图片描述
    创建数据库成功后,数据库的数量变成了5个,多了刚才创建的 MyDB_one 。

    1. 创建数据库时设置字符编码

    使用 create database 数据库名 character set utf8; 创建数据库并设置数据库的字符编码。

    create database MyDB_two character set utf8;
    
    • 1

    在这里插入图片描述
    直接创建的数据库,数据库的编码方式是 MySQL 默认的编码方式 latin1 (单字节编码) ,通常我们会在数据库中存放中文数据,所以最好把数据库的编码方式设置成 utf-8 ,这样中文才能正常显示。

    create database MyDB_three charset utf8;
    
    • 1

    character set 可以缩写成 charset ,效果是一样的。

    1. 查看和显示数据库的编码方式

    使用 show create database 数据库名; 显示数据库的创建信息。

    show create database MyDB_one;
    show create database MyDB_two;
    
    • 1
    • 2

    在这里插入图片描述
    如果不知道一个数据库的编码方式是什么,可以使用 show create database 数据库名 来查看数据库的编码方式。可以看到刚才创建的 MyDB_one 的编码方式是 MySQL 的默认编码 latin1 ,MyDB_two 的编码方式是 utf-8 。

    当然,这种方式不能在创建的同时显示,只能查看一个已经存在的数据库的编码方式。

    1. 使用 alter database 数据库名 character set utf8; 修改数据库编码
    alter database MyDB_one character set utf8;
    
    • 1

    在这里插入图片描述
    如果一个数据库的编码方式不符合使用需求,可以进行修改。刚才创建的 MyDB_one 经过修改后,编码方式也变成了 utf-8 。

    1. 进入或切换数据库

    使用 use 数据库名 进入或切换数据库。

    use MyDB_one
    use MyDB_two;
    
    • 1
    • 2

    在这里插入图片描述
    刚连接上 MySQL 时,没有处于任何一个数据库中,如果要使用某一个数据库,就需要进入到这个数据库中。

    use 数据库名 这个命令后面的分号可以省略,这是 SQL 语句中唯一可以省略分号的语句。

    1. 显示当前数据库 select database();
    select database();
    
    • 1

    在这里插入图片描述
    创建数据表

    1. 查看当前数据库中的表

    使用 show tables;查看当前数据库中有哪些表。

    show tables;
    
    • 1

    在这里插入图片描述
    在刚才创建的数据库 MyDB_one 中,还没有创建任何表,所以当前是空的。

    1. 创建表

    使用 create table 表名(字段1 字段类型,字段2 字段类型,字段3 字段类型,…); 来创建一张表。

    create table Phone_table(pid INT, name CHAR(20), price INT);
    
    • 1

    在这里插入图片描述
    在 MyDB_one 中创建了一个叫 Phone_table 的数据表,这张表有三个字段 pid,name,price 。为了增加 SQL 的可读性,字段名我用的是小写,字段类型用大写。

    1. 显示表信息

    用 show create table 表名; 来显示已创建的表的信息。

    show create table Phone_table;
    在这里插入图片描述

    使用 show create table 表名; 可以显示表的字段信息, MySQL 的引擎,和默认的字符编码等信息。与显示数据库信息一样,show 只能显示已经创建了的数据表的信息,不能在创建的同时显示信息。
    在这里插入图片描述
    如果想更好地展示表的字段信息,可以使用 desc 表名; 来显示表的字段信息。

    1. 给表增加字段

    使用 alter table 表名 add 字段名 数据类型; 为已存在的表添加一个新字段。

    alter table Phone_table add color CHAR(20);
    
    • 1

    在这里插入图片描述
    其他详细的MySQL创建数据库好数据表参考链接:https://blog.csdn.net/weixin_43790276/article/details/102655786

    总结

    通过以上的资料,可以搭建出一个简单的Django网页,输出“HelloWord”,解决了Django项目的部署流程以及关系型数据库MySQL与Django配置的问题,对Django搭建网页有了基本的认识!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/449896
推荐阅读
相关标签
  

闽ICP备14008679号