视频中关于column中的default参数感觉老师讲解的有错误。
我的理解这里的default不能映射到表结构上,只是在执行数据库写入的时候会把datetime.now函数执行为一个具体的时间值,然后将值带入到SQL中执行。
实验:
定义表
NewsBase__tablename__idIntegercreate_timedatetimenowread_countIntegertitle
创建表时数据库实际执行的SQL
Base.metadata.create_all()
CREATE TABLE news (
id SERIAL NOT NULL,
create_time TIMESTAMP WITH TIME ZONE,
read_count INTEGER,
title VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
)
插入数据时实际执行的SQL
sessionenginenewssessionnewssession
INSERT INTO news (create_time, read_count, title) VALUES ('2021-05-19T15:32:47.941137'::timestamp, 1000, '新闻') RETURNING news.id