模型:
配置数据库
首先保证数据库已经安装,默认在Ubuntu下已经安装了sqlite3数据库,然后在项目名下的配置文件settings.py修改如下代码:
安装sqlite3
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/home/myproject/datas/mydata.db',
# The following settings are not used with sqlite3:
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
安装mysql
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #
'NAME':'Blog',
# 数据库的名字. 数据库的名字必须在Mysql的数据库中存在,否则会报错,数据库的名字可以任意起,但是别忘记在mysql数据库中创建此数据库
'USER': 'gjianw217', # 用户名.
'PASSWORD': '******',
'HOST':'/tmp/mysql.sock'
,# 如果是localhost的话,留空
'PORT':'3306' ,#如果你没改动的话,mysql默认就是这个端口
}
}
编写models
数据库文件或数据表的添加是在应用中的models.py文件中添加的,如在应用中添加如下代码:
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
生成数据
在设置中添加应用app
执行python manage.py validate,验证模型的有效性
执行python manage.py sqlall books,生成CREATE TABLE 语句
执行python manage.py syncdb,提交SQL语句至数据库
取出数据
Publisher.objects.all()
Publisher.objects.filter(name='Apress') 数据过滤
Publisher.objects.get(name="Apress") 获取单个的对象
Publisher.objects.order_by("name") 按字母顺序
Publisher.objects.order_by("-name") 指定逆向排序
Publisher.objects.order_by('name')[0:2] 取出固定数目的记录
放入数据
完成对象的创建及存储至数据库
p1 = Publisher(name='Apress', address='2855 Telegraph Avenue',
city='Berkeley', state_province='CA', country='U.S.A.',
website='http://www.apress.com/')
p1.save()
完成对象的创建与存储至数据库
p2 = Publisher(name='Apress', address='2855 Telegraph Avenue',
city='Berkeley', state_province='CA', country='U.S.A.',
website='http://www.apress.com/')