Подтвердить что ты не робот

Создайте ISODate с pyMongo

Я пытаюсь найти способ создания объекта ISODate с клиентом pyMongo, но без каких-либо успехов.

Я использую http://pypi.python.org/pypi/pymongo3 клиент, который является единственным серьезным, доступным в Python 3, но проблема, похоже, не связана с этим конкретным pymongo версия.

Я хотел бы знать, нашел ли кто-нибудь из вас решение использовать этот тип объекта MongoDB у клиента pymongo... спасибо за вашу помощь!

4b9b3361

Ответ 1

Вам просто нужно сохранить экземпляр datetime.datetime.

Вставка из оболочки python:

>>> c.test.test.insert({'date': datetime.datetime.utcnow()})
ObjectId('4e8b388367d5bd2de0000000')
>>> c.test.test.find_one()
{u'date': datetime.datetime(2011, 10, 4, 16, 46, 59, 786000), u'_id': ObjectId('4e8b388367d5bd2de0000000')}

Запрос в оболочке mongo:

> db.test.findOne()
{
    "_id" : ObjectId("4e8b388367d5bd2de0000000"),
    "date" : ISODate("2011-10-04T16:46:59.786Z")
}

Ответ 2

Для тех, кто задается вопросом, как создать ISODate из метки времени:

ts = time.time()
isodate = datetime.datetime.fromtimestamp(ts, None)

Это создаст объект datetime без часовой пояс. Когда он вставлен в MongoDB, он преобразуется в правильный ISODate().

Кроме того, я настоятельно рекомендую посмотреть Python TimeTransitionsImage. Обратите внимание, что tuple здесь называется tuple (эквивалентно struct в C). А также обратите внимание, что поля кортежей не совпадают с полями C, хотя именование одинаковое (например, tm_wday начинается с понедельника, а не в воскресенье).

Ответ 3

result = db.objects.insert_one(
   {"last_modified": datetime.datetime.utcnow()})

Здесь utc обозначает универсальные координаты времени.