flask 教程里 db.DateTime 和 db.DateTime() 带不带括号()有什么区别?

2018-02-25 23:50:07 +08:00
 miniyao

https://github.com/miguelgrinberg/flasky/blob/master/app/models.py

line 80:

timestamp = db.Column(db.DateTime, default=datetime.utcnow)

line 94 和 line 95:

member_since = db.Column(db.DateTime(), default=datetime.utcnow)

db.DateTime 后面带不带括号有什么区别吗?

4066 次点击
所在节点    Python
8 条回复
ericls
2018-02-25 23:59:04 +08:00
看看 db.Column 的代码呢
vainl1
2018-02-26 00:00:53 +08:00
<pre>
def f():
return 1

print f
print f()
</pre>
个人理解,一个是函数指针,一个是函数调用,传递的是调用的结果值。python 新手,如理解有误欢迎指正交流。
coolair
2018-02-26 00:16:27 +08:00
这两个在这里这样用没有区别,都可以。
但是,注意后面的
est
2018-02-26 00:18:28 +08:00
flask 教程质量良莠不齐。sqlalchemy 更是深坑
coolair
2018-02-26 00:18:35 +08:00
但是,注意后面的 default=datetime.utcnow,这里要传函数。如果用的是 default=datetime.utcnow(),就传了函数执行的结果,是一个固定值(应用跑起来的时间)。
Tyanboot
2018-02-26 00:20:21 +08:00
指示类型的时候这两个没区别, 但是后面的 default 就有区别了. default 里带上 () 就是定值了, 值是创建表的时候的值, 不带 () 的话就是创建类的时候的值.
miniyao
2018-02-26 10:24:14 +08:00
@coolair
@Tyanboot

后面的那个坑踩过一回了,所以不确定前面这个是不是也有坑
lolizeppelin
2018-02-26 22:35:51 +08:00
用来对应数据库里字段类型的 原则上传 class 才是对的

能传带括号应该是内部做了兼容

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/432585

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX