Object Relational Mapping,即对象关系映射
使得Python编程人员不用直接编写SQL代码,可以像操作对象一样仅用Python语言操作数据库中的数据
模型用于描述数据,它包含了储存的数据的重要字段和行为。
函数名 | 类型 | 示例 | 通用属性 | |
models.IntegerField() | 整型 | (-2147483648,2147483647) |
|
|
models.SmallIntegerField() | 短整型 | (-32768,32767) | ||
models.BigIntegerField() | 长整型 | |||
models.PositiveIntegerField() | 正整型 | (0,2147483647) | ||
models.PositiveSmallIntegerField() | 短正整型 | (0,32768) | ||
models.CharField() | 字符串 | 'aqin' |
| |
models.FloatField() | 浮点型 | 8.88 | ||
models.DecimalField() | 十进制小数 | 8.88888 |
| |
models.BooleanField() | 布尔型 | True/False | ||
models.NullBooleanField() | 可为空布尔型 | True/False/None | ||
models.TextField() | 文本 | 'hello aqin' | ||
models.EmailField() | 邮箱 | '12345678@qq.com' | ||
models.UrlField() | 网址 | 'http://www.xxx.com' | ||
models.DateField() | 日期 (年-月-日 ) | 2022-02-02 |
| |
models.DateTimeField() | 日期 (年-月-日 时:分:秒) | 2022-02-02 12:12:12 | ||
models.TimeField() | 日期 (时:分:秒) | 12:12:12 | ||
models.ImageField() | 图片 |
| ||
models.FileField() | 文件 | 任意文件类型 |
|
models.py中的代码:
from django.db import models # 基于类的数据库模型 # 继承内置的ORM(models.Model) class User(models.Model): id = models.IntegerField(primary_key=True) name = models.CharField(max_length=20, unique=True, blank=False) age = models.IntegerField(default=0) phone_number = models.EmailField(blank=True, default='') # 创建时添加 created_time = models.DateTimeField(auto_now_add=True) # 更新时变更时间 modified_time = models.DateTimeField(auto_now=True)
查找所有可用的模型,为任意一个在数据库中不存在对应数据表的模型创建迁移脚本文件
python manage.py makemigrations
(tutorial-env) aqin1012@aqin1012deMBP mysite % python manage.py makemigrations Migrations for 'app': app/migrations/0001_initial.py - Create model User
运行上一步python manage.py makemigrations
生成的迁移脚本来自动创建数据库表
python manage.py migrate
(tutorial-env) aqin1012@aqin1012deMBP mysite % python manage.py migrate Operations to perform: Apply all migrations: admin, app, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying app.0001_initial... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying auth.0012_alter_user_first_name_max_length... OK Applying sessions.0001_initial... OK
完成撒花