您的位置:首页 > 数据库

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 )


class Poll(models.Model):


question = models.CharField(maxlength=200)


pub_date = models.DateTimeField('date published')

2.python manage.py sql polls命令可以查看polls app中CREATE TABLE SQL 语句:


BEGIN;


CREATE TABLE "polls_poll" (


"id" serial NOT NULL PRIMARY KEY,


"question" varchar(200) NOT NULL,


"pub_date" timestamp with time zone NOT NULL


);


COMMIT;

其中polls_poll是表的名字,其中polls是app的名字,而poll是model中的class的名字(Sql语句中不区分大小写),也就是说model中的每个class定义了一张表。

3.表的创建过程,exsit app-->modify model.py-->modify INSTALLED_APPS -->Check table-->syncdb:


1). Python manage.py startapp polls


2). Edit polls/models.py


3). Edit settings.py , modify INSTALLED_APPS, add 'mysite.polls'


4). Check: python manage.py sql polls


5). Create model table: python manage.py syncdb


注意:如果记得在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的时候将不会出现类似的情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: