Django入门:4_MySQL连接
目录
Django入门:1_环境设置
Django入门:2_项目创建
Django入门:3_Apache集成
Django入门:4_MySQL集成
我們之前已經準備好了使用Apache與Django構建的項目,並已準備好將其公開給外部。我們將繼續進行環境設置,而實際的程式編寫尚未開始。本次將變更資料庫設定。
Django默认使用SQLite。尽管它非常方便地启动项目(无需配置),但是如果以后要迁移到MySQL,那么所需的工作量就会比现在更大。让我们首先去做那些困难的事情吧。
当我将Django的数据库从sqlite3迁移到MySQL时遇到的困难。
由于我特别打算进行文本分析相关的工作,我读到在处理大量数据方面SQLite并不合适,因此我决定进行设置更改。此外,我对MySQL更为熟悉。
由于找不到关于SQLite和MySQL区别的有趣文章,所以如果有合适的文章或书籍,请介绍一下。这里有一份简要的差异说明。以下是可在租用服务器上使用的数据库管理系统列表。
Environment (环境)
-
- CentOS 7.1
-
- Apache 2.4.6
-
- pyenv 1.0.7
-
- anaconda 3-4.3.0
-
- Django 1.10.5
- MariaDB 5.5.52
我正在使用CentOS内置的MariaDB。
MariaDB是MySQL的一个派生版本。
它与MySQL在5.5版本之前没有太大区别,所以我选择使用它。
经过多年的讨论,我总结了MySQL和MariaDB之间的差异列表。
安装MariaDB。
yum install mariadb mariadb-server mariadb-devel
编辑设置文件
打开mysql的配置文件。
如果处理日语,请指定字符编码。
vi /etc/my.cnf
在[m ysqld]下面添加以下内容
character-set-server = utf8
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
另外,在下面完整添加以下内容
[client]
default-character-set = utf8
为了使设置生效,请重新启动。
systemctl start mariadb
systemctl enable mariadb
最初的设定
因为被问了很多问题,所以我会一一回答。
mysql_secure_installation
Enter current password for root (enter for none): # 初期設定はブランク。そのままエンターを押せば良いです
Set root password? [Y/n] y
New password: # 任意のパスワード
Re-enter new password:: # パスワード確認
以下的问题都可以用「y」来回答。
使用带有密码的mysql进行执行。
$ mysql -u root -p
Enter password: # 先ほど設定したパスワードを入力します
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 789
Server version: 5.5.47-MariaDB MariaDB Server
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
我們將為Django創建一個資料庫。
MariaDB [(none)]> create database xxx;
MariaDB [(none)]> exit;
DB的设置已经完成。
接下来只需让Django识别这个DB即可。
Django配置
打开配置文件。
vi settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'xxx', # 先ほど作成したDB名
'USER': 'root', # mysqlのユーザ名(セキュリティ的にはrootはNGです。適宜変更しましょう)
'PASSWORD': 'pass', # mysqlのパスワード
'HOST': '', # ホストIP
'PORT': '', # ポート
}
}
...
TIME_ZONE = 'Asia/Tokyo'
如果HOST和PORT使用的是本地主机的默认端口,则可以留空,没有问题。
添加模块
pip install PyMySQL
在Python2中使用的是python-mysql,但据说它不支持Python3。
指示使用在manage.py中添加的模块。
vi manage.py
import pymysql
pymysql.install_as_MySQLdb()
我们来创建和运行迁移。
python manage.py makemigrations
python manage.py migrate
请依照以下指南参考。
使用Python3和Django连接到MySQL数据库