django配置数据库默认为sqlite3,这是一个小型数据库。django还支持市面上流行的数据库,如SQLServer, MySQL, Oracle等。本文介绍如何在django中配置其数据库为mysql。
Django.version: 1.10.1
1. 确认Python是否安装MySQLdb模块
进入cmd,执行如下操作:
如果import MySQLdb报错,需要安装这个模块。
2. Create Project and APP
E:\>python django-admin.py startproject mysite
E:\mysite>cd mysite
E:\mysite>python django-admi.py startapp blog 或者 python manage.py startapp blog
说明:Project与App的关系,一个Project可以有多个App构成。
3. Create your DB in MySQL(Assume 'mydb' as the database name)
mysql> create database mydb;
mysql> commit;
mysql> exit;
4. 修改project的配置,找到/mysite/mysite/setting.py,修改相关内容( INSTALLED_APPS与DATABASES元组 )
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog', #Add your own app name, this is the app name you have created at step 2.
)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',# Add 'postgresql_psycopg2','mysql', 'sqlite3' or 'oracle'
'NAME': 'mydb', # Your db name, Or path to database file if using sqlite3
'USER':'root', # Your db user name, Not used with sqlite3
'PASSWORD':'mysql123', # Your db password, Not used with sqlite3
'HOST':'', # Your db host, set to empty string('') for default for localhost, Not used with sqlite3
'PORT':'3306', # Your db port, set to empty string('') for default, Not used with sqlite3
}
}
5. 创建Model,即修改app的配置(为这个APP创建表进行配置),找到mysite/blog/models.py,输入如下内容
from django.db import models
class BlogInfo(models.Model):
name = models.CharField(max_length=20)
注:每一个APP都有一个对应的models.py文件,如果这个文件的内容过大,理论上是可以拆分的,但不建议。 这时候应该考虑去拆APP,所谓“宁拆十个APP,不分一个Model”。
6. 检查是否有错误
E:\mysite>python manage.py check
0 errors found
注:django1.7之前命令是python manage.py validate
7. 同步数据库
E:\mysite>python manage.py makeimgrations
E:\mysite>python manage.py imgrate
注:django1.7之前命令是python manage.py syncdb
8. 查看MySQL
E:\mysite>python manage.py dbshell
mysql> use mydb
Database changed
mysql> show tables;
mysql> desc blog_BlogInfo;
9. 如果你想看django是如何帮你创建表的,使用命令: python manage.py sqlall blog来显示mysql语法。