首页 > 技术文章 > mysql配置-django

liton 2015-01-21 15:24 原文

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/

  1. 'ENGINE':选择数据库,可为 'django.db.backends.postgresql_psycopg2', 'django.db.backends.mysql', 'django.db.backends.sqlite3', 'django.db.backends.oracle'
  2. 'NAME':实际mysql中database的名字,并不是使用的数据库名字(如:postgresql、mysql等)!需要注意的是首先创建mysite数据库,
    CREATE DATABASE IF NOT EXISTS mysite COLLATE utf8_general_ci;
  3. 'USER':'root', # mysql数据库用户名
  4. 'PASSWORD':用户对应的密码
  5. 'HOST':数据库主机地址,如果不是远程数据库,那么填写127.0.0.1是一个不错的选择,localhost可能会出错!切记!
  6. '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-networking
      bind-address = 127.0.0.1
    
    • 远程访问授权
      • 登录mysql,执行命令,
    GRANT ALL PRIVILEGES ON *.* TO 'mysqlname'@'%' IDENTIFIED BY 'mysqlpassword' WITH GRANT OPTION;
    

    根据具体情况修改mysqlname与mysqlpassword
    - 执行命令 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()   
如果没有错误,则链接成功。

推荐阅读