web-dev-qa-db-fra.com

Comment insérer une chaîne de date/heure dans Mongodb sous ISODate à l'aide de pymongo

Comment insérer une chaîne de date/heure comme celle-ci "2017-10-13T10:53:53.000Z" dans mongo db en tant que ISODate? Je reçois une chaîne dans mongodb quand j'insère: datetime.strptime("2017-10-13T10:53:53.000Z", "%Y-%m-%dT%H:%M:%S.000Z")

10
ArchieTiger

Cela fonctionne pour moi, obtenez-vous un résultat différent?

from pymongo.mongo_client import MongoClient
import datetime

d = datetime.datetime.strptime("2017-10-13T10:53:53.000Z", "%Y-%m-%dT%H:%M:%S.000Z")

with MongoClient() as mongo:
    db = mongo.get_database("test")
    db['dates'].insert({"date" : d})

Check in mongo:

> use test
switched to db test
> db.dates.findOne()
{
    "_id" : ObjectId("589307d7cfd6c908d4b677d6"),
    "date" : ISODate("2017-10-13T10:53:53Z")
}

UPDATE: Comme indiqué, si vous obtenez une erreur "Les données de temps ne correspondent pas au format", essayez une chaîne de format plus générale telle que: %Y-%m-%dT%H:%M:%S.%fZ 

13
jas

utiliser dateutildateutil.parser.parse("2017-10-13T10:53:53.000Z") retournera datetime.datetime(2017, 10, 13, 10, 53, 53, tzinfo=tzutc())

2
DevEx