[Day 12] 第一主餐 pt.5-MySQL Django一起串联,就是这麽简单

在昨天我们成功透过url取得我们的django连接以及内容了
今天我们要再回到虚拟环境,架设MySQL资料库以及跟我们Django做连接
这个部分会有比较多步骤,大家可要抓紧了,累狗~

MySQL,後端的仓库管理员

再开始安装之前,先来讲讲MySQL的功用是啥
简单来说就是,你会有一个记忆体区域叫做资料库
这个资料库你可以想像成一个very very大的仓库
里面可能包含了使用者帐号、密码、商品名称、数量、你家的拖鞋、十年前弄丢的橡皮擦
好啦後面两个可能不会有
不过资料库就是会摆放你前後端会用到各种东东的地方
那MySQL的功用就是仓库的管理员,只要你懂MySQL,MySQL就会给你
简单来说,你只要跟MySQL说
"欸,我要某某某的最後登入日期,你那边有没有"
或是
"欸,给我这个月所有的交易纪录,啊对只要给我日用品类型的就好,其他不用"
MySQL就会根据你的要求回传给你对应的东东
这就是MySQL的功用

那要怎麽安装呢,这个地方就比较复杂了
我们总共要安装3个东东,安装的所有内容如下:

sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev

这些东西就是所有mysql要用到的东东
下载完以後我们启动mysql

sudo service mysql start

启动完之後输入mysql看看有没有安装成功

看起来虽然被赏了一个NO,不过看起来应该是安装成功了
接下来我们就要来设定MySQL啦

此生到SQL,你是谁,曾怎麽活

首先要知道,不是人人都可以跟MySQL互动的,就跟你我常常看到的地下赌场一样(?
只有被MySQL认可的人,才可以进一步跟MySQL要资料
不过还好要加入MySQL俱乐部不用找有头有脸的人引荐,只要绕过去先建立好权限帐号就好
首先我们先下指令

sudo cat /etc/mysql/debian.cnf

下完之後应该会出现这个东东

这就代表经营MySQL的老板资料
而要骗过MySQL方式非常简单
先下mysql -u "老板名字" -p
这里的老板名字叫做debian-sys-maint,因此我们下这个指令
mysql -u debian-sys-maint -p
输入完之後,MySQL会问你密码多少确认你是不是真的老板
那密码就输入之前那笔资料的密码就好

输入完MySQL就会让你进入资料库仓库啦

进入资料库後,当务之急当然是先把自家的root设成你可以用密码登入的状态
毕竟root权限可是代表着CEO级别的,区区店老板怎能相比
所以我们先选择mysql这个Database
use mysql;
然後把使用者的名称跟登入方式显示出来
select user, plugin from user;
输入完後应该像这样

可以看到除了root以外的plugin属性都是mysql_native_password
那我们就顺便把root改成mysql_native_password吧
输入update user set plugin='mysql_native_password' where user='root';
把root也改成用密码登入
接着居然都改成密码登入了,那当然要赋予root一个密码罗
我们继续输入
update user set authentication_string=password('AmaneKanata') where user='root';
这意思就是把root的密码设成AmaneKanata
至於为什麽要设成这个密码呢,你去Google就知道
设完密码後别忘了更新权限
flush privileges;
更新完之後输入exit离开MySQL,离开前可以看到管理员还会很有礼貌的跟你说声bye
接着就来测试使用root能不能登入啦
输入mysql -u root -p,接着输入我们刚刚设定的密码

成功进来啦~
这样我们的MySQL权限修改就算完成了

与django之书

MySQL处理完之後,最後一步就是要跟django连结啦
至此我们还要再下载一个东西叫MySQL-python
让我们Python跟MySQL可以做连结
废话不多说 pip3 install MySQL-python



没办法,既来之王羲之,处理BUG吧
於是我又去拜了StackOverflow大神得到了答案,看来是直接载configparser这个东东再把他设定成环境变数就好
好的那也没啥问题 pip3 install configparser
再来
sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py
好,再来一次 pip3 install MySQL-python(前面试了一些方法因此有些杂讯,请见谅)

成功啦~

好的接下来换django的回合啦
这里非常简单,我们打开我们的settings.py
看到DATABASES这边

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

把这段改成这样

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', #因为你用的是MySQL
        'NAME': 'data',                       
        'USER': 'root',                       #这里用最高权限管理员
        'PASSWORD': 'AmaneKanata',            #你的密码
        'HOST': '',                           #空白预设为localhost
        'PORT': '',                           #空白预设为DB port
    }
}

然後我们回到console,新增一个app(为啥要新增app下篇讲解)
python manage.py startapp stonks_index
可以看到这边多了一个stonks_index资料夹

里面应该会有一个models.py
我们把models.py的code改成下面的程序码

from django.db import models

# Create your models here.
class DBTest(models.Model):
    test = models.CharField(max_length=100, primary_key=True)

然後我们执行python3 manage.py makemigrations会发现
他又报错了
(因为这里忘记截图了,请客官当作这边有喷错的图)
查了一下发现是mysql的版本出问题
所以我们就把mysqlclient改成2.0版本
我们下这个指令:pip3 install mysqlclient==2.0.1
然後重新执行python3 manage.py makemigrations

可以看到他说找不到'data'这个database
不过由於篇幅关系,我们下一篇再来处理

总之,今天我们架好了MySQL,以及确定有跟django做连结了
明天我们再处理mySQL的问题,以及建立MySQL的table
欲知database如何运作,以及django如何做到神奇的建立table
咱们下回分解~


<<:  [Day16] Vite 出小蜜蜂~ Text 文字!

>>:  Day 8 - Functional Programming 初探 (1) - HoF 与 Side Effects

【Day29】Pixi-AnimatedSprite

PIXI.AnimatedSprite 今天介绍用PIXI.AnimatedSprite做影格动画 ...

计算API所需要的参数: IV

重点是要透过第一天的 Nonce 来算出 IV,果然金融机构的 API 就是复杂。要从计算的结果再计...

目前销售流程遇到什麽问题?

在探讨这个问题之前,先来分享我们目前的销售流程 搜集名单 透过脸书投放名单型广告,或是 Google...

[FLM] Genero的License授权

今天谈点轻松的,Genero的 License Genero Package在销售上并不是如同 J...

[DAY25]Istio延伸功能-Rate Limits限流

Rate Limits Rate Limits主要功能是防止request过量打爆服务,当同一来源的...