概述
使用mysql

概述

  1. DATABASE_ENGINE告诉Django使用哪个数据库引擎,如果你使用数据库和Django工作的话,DATABASE_ENGINE必须是下面的字符串集合: (...)注意不管你使用什么数据库,你都需要安装相应的数据库适配器,每个适配器在网上都是免费的
  2. DATABASE_NAME告诉Django数据库名字是什么,如果你使用SQLite, 指出数据库文件的完整的文件系统路径,如'/home/django/mydata.db'
  3. DATABASE_USER告诉Django你连接数据库的用户名,如果你使用SQLite,这项为空
  4. DATABASE_PASSWORD告诉Django你连接数据库的密码,如果你使用SQLite或者你的密码为空,则这项为空
  5. DATABASE_HOST告诉Django你连接数据库的主机,如果你的数据库和Django安装在同一台计算机上,则这项为空;如果你使用SQLite,这项为空;MySQL在这里很特殊,如果这项的值以'/'开头并且你使用MySQL,MySQL会通过Unix socket连接特殊的socket;例如DATABASE_HOST = '/var/run/mysql/';如果你使用MySQL但这项的值不是以'/'开头,那么这项的值就假设为所连接的主机
  6. DATABASE_PORT告诉Django连接数据库的端口,如果你使用SQLite,则这项为空。否则,如果这项为空,底层的数据库适配器会使用给的数据库的默认端口,大部分情况下默认端口即可

一旦你输入了这些设置,测试一下你的配置:

首先在你第2章创建的mysite项目目录下运行python manage.py shell,你将会看到进入了Python交互环境,但是眼睛是会骗人的!它和普通的python有一个重要的不同,普通的python命令进入的是Python shell,但是前者告诉Django在启动shell前使用哪个settings文件这是做数据库查询的主要前提,Django需要知道使用哪个settings文件来得到数据库连接信息在后台,python manage.py shell设置了DJANGO_SETTINGS_MODULE环境变量后面我们会解释它的微妙之处,先让我们测试一下数据库配置:

>>> from django.db import connnection
>>> cursor = connection.cursor()

如果什么事情都没有发生,则你的数据库配置对了

使用mysql

创建数据库

# mysql -p            // 提示输入root密码
...
mysql> create database ylinux;  // 创建ylinux数据库
mysql> use ylinux;         // 使用ylinux数据库
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql> create table visit (times bigint);  // 创建一个数据存放访问量
Query OK, 0 rows affected (0.09 sec)

mysql> show tables; // 能看到多了一个表
+------------------+
| Tables_in_ylinux |
+------------------+
| visit            |
+------------------+
1 row in set (0.05 sec)

mysql>

创建数据库用户ylinux对ylinux数据库有查询、插入、修改、删除权限,只能在本机:

mysql> grant select,insert,update,delete on ylinux.* to ylinux@localhost identified by "abc";
Query OK, 0 rows affected (0.38 sec)

以后要修用户的密码,可以用:

# mysql -uroot -p
...
mysql> use mysql
mysql> select * from user where user='ylinux';
...  // 这里我们可以查看到 ylinux 的 "Host"和"User" 信息
mysql> set password for ylinux@"localhost" = PASSWORD('你的密码');
// 其中 localhost 就是上条命令常看到的。

现在配置 settings.py :

DATABASE_ENGINE = 'mysql'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'ylinux'             # Or path to database file if using sqlite3.
DATABASE_USER = 'ylinux'             # Not used with sqlite3.
DATABASE_PASSWORD = 'abc'         # Not used with sqlite3.
DATABASE_HOST = ''             # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.