数据库配置
在 setting .py里找到数据库配置
DATABASE_ENGINE = ' ' like this:django.db.backends.mysql
DATABASE_NAME = ' '
DATABASE_USER = ' '
DATABASE_PASSWORD = ' '
DATABASE_HOST = ' '
DATABASE_PORT = ' '
输入以下,如果没有打印错误则配置正确:
>>> from django.db import connection
>>> cursor = connection.cursor()
第一个应用程序,在创建的project下创建app
python manage.py startapp books 可以理解为:一个app是一个功能模块,project里是配置。
books/
__init__.py
models.py
tests.py
views.py
创建第一个模型,每个模型相当于单个数据库表
点击(此处)折叠或打开
-
from django.db import models
-
-
class Publisher(models.Model):
-
name = models.CharField(max_length=30)
-
address = models.CharField(max_length=50)
模型安装,setting .py里
INSTALLED_APPS = (
'mysite.books',
)
开始创建数据库表:
首先验证数据库表的正确性
python manage.py validate
其次,同步模型到数据库
python manage.py syncdb
基本数据访问
点击(此处)折叠或打开
-
>>> from books.models import Publisher
-
>>> p1 = Publisher(name='Apress', address='2855 Telegraph Avenue',
-
... city='Berkeley', state_province='CA', country='U.S.A.',
-
... website='')
-
>>> p1.save()
-
>>> publisher_list
[, ]
选择对象
>>> Publisher.objects.all()
[
, ] 返回数据库中所有的记录,列表
数据过滤
>>> Publisher.objects.filter(name='Apress')
[]
获取单个对象
>>> Publisher.objects.get(name="Apress")
捕获并处理异常
try:
p = Publisher.objects.get(name='Apress')
except Publisher.DoesNotExist:
print "Apress isn't in the database yet."
else:
print "Apress is in the database."
数据排序
按字母顺序
>>> Publisher.objects.order_by("name")
[, ]
逆向排序
>>> Publisher.objects.order_by("-name")
[, ]
Django让你可以指定模型的缺省排序方式:
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
def __unicode__(self):
return self.name
**class Meta:**
**ordering = ['name']**
连锁查询
>>> Publisher.objects.filter(country="U.S.A.").order_by("-name")
[, ]
限制返回的数据
只显示第一个,可以使用标准的Python列表裁剪语句:
>>> Publisher.objects.order_by('name')[0]
>>> Publisher.objects.order_by('name')[0:2]
注意,不支持Python的负索引,像这样:
>>> Publisher.objects.order_by('-name')[0]
更新多个对象
>>> Publisher.objects.filter(id=52).update(name='Apress Publishing')
删除对象
一旦使用all()方法,所有数据将会被删除:
>>> Publisher.objects.all().delete()
如果只需要删除部分的数据,就不需要调用all()方法。
>>> Publisher.objects.filter(country='USA').delete()