Python web项目(2) 通过类创建表
博客专区 > james_lz 的博客 > 博客详情
Python web项目(2) 通过类创建表
james_lz 发表于10个月前
Python web项目(2) 通过类创建表
  • 发表于 10个月前
  • 阅读 10
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

 Python 描述类

from django.db import models

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):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField()

class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)
    publication_date = models.DateField()

每个模型相当于单个数据库表,每个属性也是这个表中的一个字段。 属性名就是字段名,它的类型(例如CharField )相当于数据库的字段类型 (例如 varchar )。例如, Publisher 模块等同于下面这张表(用PostgreSQL的 CREATE TABLE 语法描述):

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
);

“每个数据库表对应一个类”这条规则的例外情况是多对多关系。 在我们的范例模型中, Book 有一个多对多字段 叫做 authors 。 该字段表明一本书籍有一个或多个作者,但 Book 数据库表却并没有 authors 字段。 相反,Django创建了一个额外的表(多对多连接表)来处理书籍和作者之间的映射关系。

 注意

我们并没有显式地为这些模型定义任何主键。 除非你单独指明,
否则Django会自动为每个模型生成一个自增长的整数主键字段每个Django模型都要求有单独的主键id

完成这些代码之后,现在让我们来在数据库中创建这些表:

1 激这些模型

编辑 settings.py 文件, 找到 INSTALLED_APPS 设置
注释掉四个默认的配置,同时,注释掉MIDDLEWARE_CLASSES的默认设置条目
 然后,添加`` ‘mysite.books’`` 到`` INSTALLED_APPS`` 的末尾

说明:'mysite.books'指示我们正在编写的books app

2 创建数据表:

#验证有效性
python manage.py validate
#创建
python manage.py sqlall books 
 或者
python manage.py startapp books
#记录改变
python manage.py makemigrations
#生成数据表
python manager.py migrate

说明:

自动生成的表名是app名称( books )和模型的小写名称 ( publisher , book , author )的组合

 

标签: Python
共有 人打赏支持
粉丝 11
博文 140
码字总数 48432
×
james_lz
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: