您的位置:首页 > 数据库

Django 使用数据库

2010-08-18 13:27 288 查看
Django 使用数据库

概述

使用mysql

概述

DATABASE_ENGINE告诉Django使用哪个数据库引擎,如果你使用数据库和Django工作

的话,DATABASE_ENGINE必须是下面的字符串集合: (...)注意不管你使用什么数据

库,你都需要安装相应的数据库适配器,每个适配器在网上都是免费的

DATABASE_NAME告诉Django数据库名字是什么,如果你使用SQLite, 指出数据库文

件的完整的文件系统路径,如'/home/django/mydata.db'

DATABASE_USER告诉Django你连接数据库的用户名,如果你使用SQLite,这项为空

DATABASE_PASSWORD告诉Django你连接数据库的密码,如果你使用SQLite或者你的密

码为空,则这项为空

DATABASE_HOST告诉Django你连接数据库的主机,如果你的数据库和Django安装在同

一台计算机上,则这项为空;如果你使用SQLite,这项为空;MySQL在这里很特殊,如

果这项的值以'/'开头并且你使用MySQL,MySQL会通过Unix socket连接特殊的

socket;例如DATABASE_HOST = '/var/run/mysql/';如果你使用MySQL但这项的值不

是以'/'开头,那么这项的值就假设为所连接的主机

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.

DATABASE_ENGINE告诉Django使用哪个数据库引擎,如果你使用数据库和Django工作

的话,DATABASE_ENGINE 必须是下面的字符串集合: (...)注意不管你使用什么数

据库,你都需要安装相应的数据库适配器,每个适配器在网上都是免费的

DATABASE_NAME告诉Django数据库名字是什么,如果你使用SQLite, 指出数据库文

件的完整的文件系统路径,如'/home/django/mydata.db'

DATABASE_USER告诉Django你连接数据库的用户名,如果你使用SQLite,这项为空

DATABASE_PASSWORD告诉Django你连接数据库的密码,如果你使用SQLite或者你的密

码为空,则这项为空

DATABASE_HOST告诉Django你连接数据库的主机,如果你的数据库和Django安装在同

一台计算机上,则这项为空;如果你使用 SQLite,这项为空;MySQL在这里很特殊,

如果这项的值以'/'开头并且你使用MySQL,MySQL会通过Unix socket连接特殊的

socket;例如DATABASE_HOST = '/var/run/mysql/';如果你使用MySQL但这项的值不

是以'/'开头,那么这项的值就假设为所连接的主机

DATABASE_PORT告诉Django连接数据库的端口,如果你使用SQLite,则这项为空。否

则,如果这项为空,底层的数据库适配器会 使用给的数据库的默认端口,大部分情

况下默认端口即可

view plaincopy to clipboardprint?

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.

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

首先在你第2章创建的mysite项目目录下运行python manage.py shell,你将会看到

进入了Python交互环境,但是眼睛是会骗人的!它和普通的python有一个重要的不

同,普通的python命令进入的是 Python shell,但是前者告诉Django在启动shell

前使用哪个settings文件这是做数据库查询的主要前提,Django需要知道使用哪个

settings文件来得到数据库连接信息在后台,python manage.py shell设置了

DJANGO_SETTINGS_MODULE环境变量后面我们会解释它的微妙之处,先让我们测试一

下数据库配置:

view plaincopy to clipboardprint?

>>> from django.db import connection

>>> cursor = connection.cursor()

如果什么事情都没有发生,则你的数据库配置对了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: