前言
这段时间在做一个基于B/S的信息管理平台,在迪总的安排下,我和文涛同学负责后端的开发。在项目开始就确定了Python+Django+MySQL环境,在几次试验以后确定了版本,采用Python 3.6.1+Django 1.11+MySQL 5.7.18 作为开发环境。本文主要总结该环境搭建的步骤和经验,主要参考了自强学堂 和廖雪峰的官方网站的教程。
接上一篇的内容,继续总结 MySQL 5.7.18 的安装 和 Django 项目与 MySQL 的连接与测试。
MySQL 5.7.18 的安装
下载
官方下载:https://www.mysql.com/downloads/
官方文档:https://dev.mysql.com/doc/
注意选择MySQL Community Server (GPL) 5.7.18,这里安装的是社区免费版。
安装
安装过程是傻瓜式的,需要记住的是随机生成的密码(这三张图是借的):
安装完成后启动MySQL:
配置环境变量
打开终端,输入mysql
显示:
MacBook-Air:~ ww$ mysql
-bash: mysql: command not found
说明没有找到mysql
,可以去MySQL默认的安装路径/usr/local/mysql/bin/
找一下mysql
,确定有的话就开始改环境变量:
$ vim ~/.bash_profile
在 .bash_profile
文件中加入export PATH=${PATH}:/usr/local/mysql/bin
,然后保存退出,在终端执行:
$ source ~/.bash_profile
让改变生效。此时执行mysql
和mysqladmin
:
MacBook-Air:~ ww$ mysql
ERROR 1045 (28000): Access denied for user 'ww'@'localhost' (using password: NO)
MacBook-Air:~ ww$ mysqladmin
mysqladmin Ver 8.42 Distrib 5.7.18, for macos10.12 on x86_64
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
...
发现命令已经可以使用,第一个命令没有密码被拒绝。
改密码
我们直接改root
账户的密码,这里列了三种方法:
$ mysqladmin -u root -p password 123456 #执行后要输入旧密码,还有会被提示不安全
登陆MySQL
mysql> set password for 用户名@localhost=password('新密码')
登陆MySQL
mysql> use mysql;
mysql> update user set password=password('新密码') where user='root' and host='localhost';
mysql> flush privileges;
现在可以用新密码123456
来登录MySQL了:
$ mysql -u root -p
Enter password: #输入密码,它不会显示出来
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 188
Server version: 5.7.18 MySQL Community Server (GPL)
...
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
登陆成功。简单的SQL语句可以参考自强学堂SQL教程。
Django 项目与 MySQL 的连接与测试
在上一篇中我们已经创建了工程Jerry_site
:
- Jerry_site #项目目录
- Jerry_site
- __init__.py
- __pycache__
- settings.py
- urls.py
- wsgi.py
- demo #app目录
- __init__.py
- migrations
- models.py
- tests.py
- views.py
- manage.py
连接
打开项目目录中的settings.py
,注意以下代码段:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
可以看出,现在用的是sqlite3
这个数据库,为了连接MySQL将代码改为:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'Jerry_DB', #数据库名
'USER': 'root', #用户名
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
给项目虚环境安装pymysql
组件,注意要进到虚环境venv
,是给这个虚环境安装:
(venv) MacBook-Air:Jerry_site ww$ pip install pymysql
Collecting pymysql
Using cached PyMySQL-0.7.11-py2.py3-none-any.whl
Installing collected packages: pymysql
Successfully installed pymysql-0.7.11
打开Jerry_site/Jerry_site/__init__.py
,写入以下代码:
import pymysql
pymysql.install_as_MySQLdb()
现在我们还没有要连接的数据库Jerry_DB
,所以在MySQL中创建一下:
mysql> create database Jerry_db;
Query OK, 1 row affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| Jerry_db |
| PROJECT_DB |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
7 rows in set (0.03 sec)
可以看到我们已经有了数据库Jerry_DB
。
测试
进入到项目目录Jerry_site/
下,执行:
(venv) MacBook-Air:Jerry_site jlwang$ python manage.py dishell
...
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 191
Server version: 5.7.18 MySQL Community Server (GPL)
...
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
看到这个提示,我们顺利进入到数据库命令行,其实已经连接成功,但是我们任然用从其他博客看到的方法来测试一下,任然是在项目目录Jerry_site/
下,执行:
(venv) MacBook-Air:Jerry_site ww$ python manage.py shell
Python 3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.db import connection #在项目终端环境执行以下两句
>>> cursor = connection.cursor()
>>>
结果没有报错,连接成功。
小结
本篇主要总结了MySQL 5.7.18的安装和环境变量配置,还有MySQL与Django 1.11的连接与测试。