1.设置settings.py
DATABASE_ENGINE = 'mysql'
DATABASE_NAME = 'django'
DATABASE_USER = 'root'
DATABASE_PASSWORD = '123456'
DATABASE_HOST = 'localhost'
DATABASE_PORT = ''
要注意的是无论选择使用哪个数据库服务器,都必须下载和安装对应的数据库适配器。
Mysql为:http://www.djangoproject.com/r/python-mysql/
输入完设置后,测试一下配置情况。首先,转到mysite 项目目录,运行 python manage.py shell 命令。输入下面这些命令来测试你的数据库配置:
>>> from django.db import connection
>>> cursor = connection.cursor()
如果没有显示什么错误信息,那么你的数据库配置是正确的。
2. 执行下面的命令来创建一个新app叫做books:
python manage.py startapp books
3.添加模型,打开 models.py 并输入下面的内容
from django.db import models
# Create your models here.
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()
class Author(models.Model):
salutation = models.CharField(max_length=10)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
headshot = models.ImageField(upload_to='tmp')
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
4.模型安装
再次编辑 settings.py 文件, 找到 INSTALLED_APPS 设置。
INSTALLED_APPS = (
# 'django.contrib.auth',
# 'django.contrib.contenttypes',
# 'django.contrib.sessions',
# 'django.contrib.sites',
'mysite.books'
)
现在我们可以创建数据库表了。首先,用下面的命令对校验模型的有效性:
python manage.py validate
按提示信息安装相应模块
books.author: “headshot”: To use ImageFields, you need to install the Python Ima
ging Library. Get it at http://www.pythonware.com/products/pil/ .
模型确认没问题了,运行下面的命令来生成 CREATE TABLE 语句:
python manage.py sqlall books
运行命令的结果是这样的:
BEGIN;
CREATE TABLE "books_publisher" (
"id" serial NOT NULL PRIMARY KEY,
"name" varchar(30) NOT NULL,
"address" varchar(50) NOT NULL,
"city" varchar(60) NOT NULL,
"state_province" varchar(30) NOT NULL,
"country" varchar(50) NOT NULL,
"website" varchar(200) NOT NULL
);
CREATE TABLE "books_book" (
"id" serial NOT NULL PRIMARY KEY,
"title" varchar(100) NOT NULL,
"publisher_id" integer NOT NULL REFERENCES "books_publisher" ("id"),
"publication_date" date NOT NULL
);
CREATE TABLE "books_author" (
"id" serial NOT NULL PRIMARY KEY,
"salutation" varchar(10) NOT NULL,
"first_name" varchar(30) NOT NULL,
"last_name" varchar(40) NOT NULL,
"email" varchar(75) NOT NULL,
"headshot" varchar(100) NOT NULL
);
CREATE TABLE "books_book_authors" (
"id" serial NOT NULL PRIMARY KEY,
"book_id" integer NOT NULL REFERENCES "books_book" ("id"),
"author_id" integer NOT NULL REFERENCES "books_author" ("id"),
UNIQUE ("book_id", "author_id")
);
CREATE INDEX books_book_publisher_id ON "books_book" ("publisher_id");
COMMIT;
sqlall 命令并没有在数据库中真正创建数据表,只是把SQL语句段打印出来。你可以把这些语句段拷贝到你的SQL客户端去执行它。当然,Django提供了更简单的方法来执行这些SQL语句。运行 syncdb 命令:
python manage.py syncdb
你将会看到这样的内容:
Creating table books_publisher
Creating table books_book
Creating table books_author
Installing index for books.Book model
syncdb 命令是同步你的模型到数据库的一个简单方法。它会根据 INSTALLED_APPS 里设置的app来检查数据库,如果表不存在,它就会创建它。需要注意的是, syncdb 并 不能同步模型的修改到数据库。如果你修改了模型,然后你想更新数据库, syncdb 是帮不了你的。(稍后我们再讲这些。)
如果你再次运行 python manage.py syncdb ,什么也没发生,因为你没有添加新的模型或者添加新的app。所以,运行 python manage.py syncdb 总是安全的,它不会把事情搞砸。
如果你有兴趣,花点时间用你的SQL客户端登录进数据库服务器看看刚才Django创建的数据表。 Django带有一个命令行工具, python manage.py dbshell 。
5.基本数据访问
运行 python manage.py shell 并输入下面的内容试试看:
>>> from books.models import Publisher
>>> p1 = Publisher(name='Addison-Wesley', address='75 Arlington Street',
... city='Boston', state_province='MA', country='U.S.A.',
... website='http://www.apress.com/')
>>> p1.save()
>>> 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()
>>> publisher_list
[<publisher : Publisher object>, </publisher><publisher : Publisher object>]
</publisher>
6.添加模块的字符串表现
添加一个方法 __str__() 到 Publisher 对象。 __str__() 方法告诉Python要怎样把对象当作字符串来使用。请看下面:
from django.db import models
# Create your models here.
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 __str__(self):
return self.name
class Author(models.Model):
salutation = models.CharField(max_length=10)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
headshot = models.ImageField(upload_to='/tmp')
def __str__(self):
return '%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 __str__(self):
return self.title
请确保你的每一个模型里都包含 __str__() 方法,这不只是为了交互时方便,也是因为 Django会在其他一些地方用 __str__() 来显示对象。
7.详细数据库操作参照http://djangobook.py3k.cn/chapter05/
分享到:
相关推荐
django笔记 django笔记
Django学习笔记.pdf
学习django框架的笔记,超详细
2022 B站最详细django3教程(django从入门到实践) 很适合刚学习django的同学 通过一个案例,把django的基本的templates,models,urls,from,modelfrom讲的清清楚楚,甚至还给了我们应用场景。
在看django book 2.0和django官方文档的过程中自己做的django笔记,
django学习笔记django学习笔记django学习笔记
千锋Django笔记.rar
前锋教育Django网课笔记,含代码和笔记,适合初学者学习!
学习Django框架不二选择,有源码有笔记(思维导图)
Django笔记(自用)
Django相关笔记记录了Django基础,可以帮助同行快速上手。
一起学习django,希望对你有帮助
django学习笔记,包含安装、setting详解 admin自定义管理、数据类型、视图、restfromework、认证权限等
学习Django框架时自己总结的文档,内含知识点,代码,案例。
个人总结的Django学习笔记, 持续更新中。 目前只是总结了django的一部分学习逻辑。
django 学习笔记(1)—— python和web开发框架(csdn)————程序
django教程:基本操作笔记整理.png
Django课件笔记详解,对django各功能模块的介绍以及真实案例分析。