提前建立好项目根目录mysite,cd到mysite里面,使用如下命令创建一个名为FirstSql的项目:
python django-admin.py startproject FirstSql
再cd到FirstSql下面,构建一个app,这个app用于创建model,进而构建数据库。命令如下:
python manage.py startapp books
这样会在FirstSql项目里面创建一个books的文件夹,里面的文件如下图:
我们所要编辑的就是models.py文件,用Sublime打开这个文件,输入如下代码:
from django.db import models
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
city = models.CharField(max_length=60)
state_province = models.CharField(max_length=30)
country = models.CharField(max_length=50)
website = models.URLField()
def __unicode__(self):
return self.name
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
def __unicode__(self):
return u'%s %s' % (self.first_name, self.last_name)
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
def __unicode__(self):
return self.title
每一个class都对应数据库中的一张表,他们都继承自Model类。每一个class定义结束后,是一个unicode函数,功能类似于java对象的toString方法。
这样models.py创建完毕。
下面安装模型:
先来对项目进行数据库的配置,打开FirstSql下面的settings.py,编辑INSTALLED_APPS变量,如下:
INSTALLED_APPS = (
#'django.contrib.auth',
#'django.contrib.contenttypes',
#'django.contrib.sessions',
#'django.contrib.sites',
#'django.contrib.messages',
#'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'books',
)
这个变量的含义是指明项目中哪些app要被用到,被激活。很显然,我们这里设定的是books app。其余的app暂时不用。
这样的话还要修改MIDDLEWARE_CLASSES这个变量,全部注释掉,因为这个变量会用到INSTALLED_APPS里面被注释掉的app。
还要编辑DATABASES变量,它描述有关数据库的信息,如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'pingshen', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': 'localhost', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '3306', # Set to empty string for default. Not used with sqlite3.
}
}
engine表明是社么数据库,name是数据库的名字,user是用户名,password不说了,host一般是localhost,port是数据库端口号,mysql默认3306.
然后我们来验证一下之前写的app有没有语法错误。
python manage.py validate
会出项如下命令界面:
说明没有错误。
最后安装模型,也就是说是建立数据库。
生成sql语句命令如下:
python manage.py sqlall books
cmd中会显示要执行的命令。
创建表:
python manage.py syncdb
接着会看到如下的提示:
Creating table books_publisher Creating table books_author Creating table books_book Installing index for books.Book model
数据库已经建立完毕,可以打开cmd进入mysql看一下,会有表出现。
最后我们插入几条数据,在页面里面显示一下。
新建view.py,代码如下:
from django.http import HttpResponse
from books.models import Publisher
def sql(request):
p2 = Publisher(name="O'Reilly", address='10 Fawcett St.',city='Cambridge', state_province='MA', country='U.S.A.',website='http://www.oreilly.com/')
p2.save()
publisher_list = Publisher.objects.all()
return HttpResponse(publisher_list)
很明显插入了一条记录。然后显示。
接着urls.py:
from django.conf.urls import patterns, include, url
from FirstSql.view import sql
urlpatterns = patterns('',
('^sql/$', sql),
)
项目代码就这些了,运行如下命令开启服务器:
python manage.py runserver
进入127.0.0.1:8000/sql/查看就可以了。