Django学习新得_数据库中的表
2007-07-26 22:46
375 查看
1.model文件:每个 model 都是 django.db.models.Model 的一个子类. 每个 model 有一堆类属性, 每个属性表示一个字段.每个字段都是一个 models.*Field 类的实例 -- e.g., models.CharField 是一个字符字段而 models.DateTimeField 是一个日期时间字段.( polls/models.py )
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
class Poll(models.Model):
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
question = models.CharField(maxlength=200)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pub_date = models.DateTimeField('date published')
2.python manage.py sql polls命令可以查看polls app中CREATE TABLE SQL 语句:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
BEGIN;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
CREATE TABLE "polls_poll" (
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
"id" serial NOT NULL PRIMARY KEY,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
"question" varchar(200) NOT NULL,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
"pub_date" timestamp with time zone NOT NULL
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
COMMIT;
其中polls_poll是表的名字,其中polls是app的名字,而poll是model中的class的名字(Sql语句中不区分大小写),也就是说model中的每个class定义了一张表。
3.表的创建过程,exsit app-->modify model.py-->modify INSTALLED_APPS -->Check table-->syncdb:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
1). Python manage.py startapp polls
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
2). Edit polls/models.py
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
3). Edit settings.py , modify INSTALLED_APPS, add 'mysite.polls'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
4). Check: python manage.py sql polls
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
5). Create model table: python manage.py syncdb
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
注意:如果记得在setting.py中指定你的数据引擎:DATABASE_ENGINE = 'sqlite3', 同时确定你的Database的名字:DATABASE_NAME = './data.db' ,否则即使当你Check成功并且可以在shell中(manage.py shell)成功的导入模块(from mysite.polls.models import Poll, Choice),当你查看数据库中的数据时(Poll.objects.all())后也会报错:no such table: polls_poll; 而当你指定的引擎为mysql的时候将不会出现类似的情况。
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
class Poll(models.Model):
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
question = models.CharField(maxlength=200)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pub_date = models.DateTimeField('date published')
2.python manage.py sql polls命令可以查看polls app中CREATE TABLE SQL 语句:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
BEGIN;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
CREATE TABLE "polls_poll" (
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
"id" serial NOT NULL PRIMARY KEY,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
"question" varchar(200) NOT NULL,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
"pub_date" timestamp with time zone NOT NULL
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
COMMIT;
其中polls_poll是表的名字,其中polls是app的名字,而poll是model中的class的名字(Sql语句中不区分大小写),也就是说model中的每个class定义了一张表。
3.表的创建过程,exsit app-->modify model.py-->modify INSTALLED_APPS -->Check table-->syncdb:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
1). Python manage.py startapp polls
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
2). Edit polls/models.py
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
3). Edit settings.py , modify INSTALLED_APPS, add 'mysite.polls'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
4). Check: python manage.py sql polls
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
5). Create model table: python manage.py syncdb
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
注意:如果记得在setting.py中指定你的数据引擎:DATABASE_ENGINE = 'sqlite3', 同时确定你的Database的名字:DATABASE_NAME = './data.db' ,否则即使当你Check成功并且可以在shell中(manage.py shell)成功的导入模块(from mysite.polls.models import Poll, Choice),当你查看数据库中的数据时(Poll.objects.all())后也会报错:no such table: polls_poll; 而当你指定的引擎为mysql的时候将不会出现类似的情况。
相关文章推荐
- Django学习之数据库的链接详解
- python web框架Django学习(六)数据库
- Django学习4:操作数据库
- Django 学习笔记(七)数据库基本操作(增查改删)
- Django学习笔记(6)---多应用、多数据库
- Django学习笔记1 [路由机制,数据库orm,模板语言]
- django学习10 数据库 增删改查 简单方法
- python django 学习(一)数据库 目的根据已有BBS建立新的网站步骤
- Django学习笔记(7)---多数据库中跨数据库使用多对多
- Django学习笔记3-数据库设置
- python学习笔记--Django入门三 Django 与数据库的交互:数据建模
- Django 学习笔记(七)数据库基本操作(增查改删)
- Python django学习之:model (与数据库操作)
- web 框架 Django 学习记录 (二)把数据库中表内容展示在页面
- Django学习(四)表单,让数据库更强大
- Django官方文档学习2——数据库及模板
- PythonWeb开发Django框架学习(十一)使用框架自带Admin管理数据库数据
- python学习之--Django--连接数据库mysql创建model
- Django学习8—数据库使用3-原始sql使用
- Django基础学习四_数据库的增删改查