Python中datetime.datetime对象的正确None或null条目是什么?

2024-06-09 21:17:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用pymongo将一些日期加载到mongodb中。因为pymongo会自动转换为BSON,所以我使用datetime的datetime.strptime函数将“12/04/2013”这样的输入字符串转换为如下这样的日期对象:

>>> datetime.datetime.strptime("12/04/2013",'%m/%d/%Y')
datetime.datetime(2013, 12, 4, 0, 0)

这样就可以使用标准的mongo查询进行搜索。

我的问题是:我还想表示,我不知道某物的日期在某种程度上等同于None,这样我就可以对它进行None空测试。我意识到我可以把这个日期放在很久以前或者将来,用一个try-catch块输入''或者None,但是这是hacky思想,我宁愿使用一个合适的None类型来表示实际上是None。

如何输入无日期时间?


Tags: 对象函数字符串none标准datetimemongomongodb
2条回答

当您搜索MongoDBnull时,丢失的值是等价的。

> db.foo.insert({a: null})
> db.foo.insert({})
db.foo.find({a: null}, {_id: 0})
{ "a" : null }
{  }

它的工作方式与pymongo相同:

>>> [doc for doc in pymongo.MongoClient().test.foo.find({'a': None}, {'_id': 0})]
[{u'a': None}, {}]

所以None似乎是个不错的选择。它符合Python语义,很好地处理了dict.get方法的默认行为,并在使用Python驱动程序时直观地映射到MongoDB类型。

MongoDB是一个NoSQL数据库,这意味着您可以创建有趣的数据模型。

http://docs.mongodb.org/manual/core/data-modeling-introduction/

集合中的每个文档不需要具有相同的字段名集。如果你不知道日期,你可以把它忘了。当您想要检索文档时,您的应用程序代码可以很容易地检查时间戳的存在性

import pymongo
import datetime

mclient = pymongo.MongoClient()
mclient.test.example.insert({'Name': "Orange"})
mclient.test.example.insert({'Name': "Lemon", 'timestamp':datetime.datetime.now()})
for document in mclient.test.example.find():
    if "timestamp" in document:
        print document

相关问题 更多 >