mysql配置-django
@(python)
数据库配置
像前面章节提到的 模版路径一样,数据库配置也是在Django的配置文件里,缺省 是 settings.py 。 打开这个文件并查找数据库配置:
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': os.path.join(BASE_DIR, 'db.sqlite3'),}
}
其实databases的所有项如下
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': os.path.join(BASE_DIR, 'db.sqlite3'),'USER':'','PASSWORD':'','HOST':'','PORT':'',}
}
按需要填写就可以了
ENGINE 告诉Django使用哪个数据库引擎。 如果你在 Django 中使用数据库, DATABASE_ENGINE 必须是下表所列出的值
设置 | 数据库 | 所需适配器
------------ | ------------- | ------------
postgresql | PostgreSQL | psycopg 1.x版, http://www.djangoproject.com/r/python-pgsql/1/
postgresql_psycopg2 | PostgreSQL | psycopg 2.x版, http://www.djangoproject.com/r/python-pgsql/
mysql | MySQL | MySQLdb , http://www.djangoproject.com/r/python-mysql/
sqlite3 | SQLite| 如果使用Python 2.5+则不需要适配器。 否则就使用 pysqlite , http://www.djangoproject.com/r/python-sqlite/
oracle | Oracle | cx_Oracle , http://www.djangoproject.com/r/python-oracle/
- 'ENGINE':选择数据库,可为 'django.db.backends.postgresql_psycopg2', 'django.db.backends.mysql', 'django.db.backends.sqlite3', 'django.db.backends.oracle'
- 'NAME':实际mysql中database的名字,并不是使用的数据库名字(如:postgresql、mysql等)!需要注意的是首先创建mysite数据库,
CREATE DATABASE IF NOT EXISTS mysite COLLATE utf8_general_ci; - 'USER':'root', # mysql数据库用户名
- 'PASSWORD':用户对应的密码
- 'HOST':数据库主机地址,如果不是远程数据库,那么填写127.0.0.1是一个不错的选择,localhost可能会出错!切记!
- 'PORT':数据库端口,一般没有修改的话默认是3306
本文的databases如下:
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'dtest','USER': 'root','PASSWORD': 'root','HOST': '10.103.28.343','PORT': '3306'}
}
此时需要自己手动构建dtest数据库。
安装Mysql-python
- 下载Mysql-python http://sourceforge.net/projects/mysql-python/
- 安装 libmysqld-dev
sudo apt-get install libmysqld-dev
- 在终端执行命令mysql_config ,确定是否需要修改site.cfg文件的,如果输出没有错误,则说明mysql_config脚本在PATH中(或者说在MySQL-python过程中我它能找到mysql_config脚本),那么我们就不用修改site.cfg;否则通过命令find / -name mysql_config寻找mysql_config地址,修改site.cfg的
threadsafe = False
mysql_config = mysql_config地址
安装python-dev
sudo apt-get install python-dev
否则会出现一下错误_mysql.c:29:20: fatal error: Python.h: No such file or directory #include "Python.h"
- 测试MySQLdb是否安装成功,
>>> import MySQLdb
>>>
- 如果是远程登录mysql的话,需要开启远程连接服务
- 注释掉/etc/mysql/my.cnf文件的
skip-networkingbind-address = 127.0.0.1
- 远程访问授权
- 登录mysql,执行命令,
根据具体情况修改mysqlname与mysqlpasswordGRANT ALL PRIVILEGES ON *.* TO 'mysqlname'@'%' IDENTIFIED BY 'mysqlpassword' WITH GRANT OPTION;
- 执行命令
FLUSH PRIVILEGES;
- 退出mysql
- 一定要记住重启mysql
sudo /etc/init.d/mysql restart
,可以输入service mysql
查看更多命令
- 测试django是否能连接mysql数据库
python manage.py shell#在项目根目录下执行 >>> from django.db import connection >>> cursor = connection.cursor()
如果没有错误,则链接成功。