【Django】 04.db
数据库连接:
在settings.py文件中设置数据库相关属性。
1 |
|
在__init__.py文件中设置
1 |
|
创建连接,进行简单操作
1 |
|
ORM模型:
创建模型:
-
ORM
模型一般放在app的model.py
文件中。如果这个模型要映射到数据库,需要将模型所在app在settings.py
的INSTALLED_APP
中进行安装。 -
定义一个类,继承自
models.Model
。
1 |
|
映射到数据库中:
-
在
settings.py
中配置好相应数据库。 -
在app中定义好模型。继承自
model.Model
。 -
把app添加到
INSTALLED_APP
中。 -
在cmd中,项目目录下,执行
python manage.py makemigrations
生成迁移脚本文件。 -
在cmd中,项目目录下,执行
python manage.py migrate
来将脚本文件映射到数据库中。
操作数据库:
1 |
|
数据类型(field):
-
BigAutoField
-
BooleanField (NullBooleanField)
-
CharField
1 |
|
-
DateField、DatetimeField、DateField:
DateField:
日期类型,在python中是datetime.data类型,记录年月日,映射到数据库中是date类型。可传递参数:
-
auto_now:每次save时,自动添加属性为当前时间 --> 更新时间
-
auto_time_add:创建时,该条属性自动添加为当前时间 --> 创建时间
DateTimeField:
时间日期类型,可以存储时间日期,映射到数据库是datetime类型。
TimeField:
时间类型。在数据库中是time类型
navie time 和 aware time:
navie time指没有指定时区的时间类型
aware time指已经指定时区的时间类型
pytz库:
专门用来处理时区问题的库,安装django时默认安装。
astimezone方法:
pytz库下一个转换不同时区时间的方法,这个方法只能被aware time类型调用。
1 |
|
属性和方法:
django.utils.timezone.now方法:
会根据settings.py中是否设置了`USE_TZ=True`来获取当前时间。如果设置了,则返回一个aware的UTC时间。没有设置则返回navie时间。
django.utils.timezone.localtime方法:
会根据settings.py中的TIME_ZONE来将一个aware类型的时间转换为TIME_ZONE指定时区的时间
-
EmailField:类似于CharField,在数据库也是varchar类型,最大长度是254。
-
FileField:用来存储文件。
-
ImageField:用来存储图片
-
FloatFIeld:浮点类型,映射到数据库中是float类型
-
IntegerField:整形
-
PositiveIntegerField:正整型
-
SmallIntegerField:小整型
-
PositiveSmallIntegerField:正小整型
-
TextField:大量的文本类型,映射到数据库中是longtext类型
-
UUIDField:只能存储
uuid
格式的字符串,一般作为主键 -
URlField:类似于
CharField
,只不过只能存储url格式的字符串,默认max_length
为200
Field中的常用参数:
null:
默认为False。在使用字符串相关的Field时,建议不要使用这个参数。字符串相关Field默认值是空字符串,若指定null=True会产生歧义。
blank:
标识这个字符串在表单验证时可以为空。默认是False
db_column:
这个字段在数据库中的名字,若没有设置默认使用模型中属性的名字
default:
默认值。可以为一个值,也可以为一个函数,但不支持lambda表达式,也不支持列表字典集合等可变的数据结构
primary_key:
标识主键
unique:
在表中这个数据是否唯一
Meta类:
对于一些模型级别的配置,可以在模型中定义一个Meta类,在其中添加一些属性来控制模型。
db_table:
设置表名
ordering:
设置在提取数据时的排序方式。
1 |
|