51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1413|回复: 1
打印 上一主题 下一主题

Django学习新得_数据库中的表

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-2-12 16:23:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.model文件:每个 model 都是 django.db.models.Model 的一个子类. 每个 model 有一堆类属性, 每个属性表示一个字段.每个字段都是一个 models.*Field 类的实例 -- e.g., models.CharField 是一个字符字段而 models.DateTimeField 是一个日期时间字段.( polls/models.py )
  1. class Poll(models.Model):
  2.     question = models.CharField(maxlength=200)
  3.     pub_date = models.DateTimeField('date published')
复制代码

2.python manage.py sql polls命令可以查看polls app中CREATE TABLE SQL 语句:
  1. BEGIN;
  2. CREATE TABLE "polls_poll" (
  3.     "id" serial NOT NULL PRIMARY KEY,
  4.     "question" varchar(200) NOT NULL,
  5.     "pub_date" timestamp with time zone NOT NULL
  6. );
  7. COMMIT;
复制代码
其中polls_poll是表的名字,其中polls是app的名字,而poll是model中的class的名字(Sql语句中不区分大小写),也就是说model中的每个class定义了一张表。


3.表的创建过程,exsit app-->modify model.py-->modify INSTALLED_APPS -->Check table-->syncdb:
  1. 1). Python manage.py startapp polls
  2. 2). Edit polls/models.py
  3. 3). Edit settings.py , modify INSTALLED_APPS, add 'mysite.polls'
  4. 4). Check: python manage.py sql polls
  5. 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的时候将不会出现类似的情况。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-18 14:00 , Processed in 0.062625 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表