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数据库

广告
将在 10 秒后关闭
bannerAds