11

新しいドキュメントが作成されたときに、現在の時刻を特定の形式で保存しようとしています。これは、動作していないメソッドを呼び出すコードの部分です。

    dbm = AccountsDB()
    dbm.store_info(user_info)

そして、これが実際のAccountsDB()クラスです。

#! /usr/bin/env python2.7

import pymongo
import datetime
import time

class AccountsDB():
    def store_info(self, user_info=None):
        try:
            conn = pymongo.Connection('localhost', 27017)
            db_name = 'accountsdb'
            coll_name = 'user_info'

            db = conn[db_name]
            coll = db[coll_name]
            print "Successfully connected to '%s'" % db_name

            now = datetime.datetime.now()
            if user_info is not None:
                now = datetime.datetime.now()
                ''' 
                This is not Working...

                created_time = {
                    'created_time': {
                        'day': now.day,
                        'month': now.month,
                        'year': now.year,
                        'hour': now.hour,
                        'minute': now.minute,
                        'second': now.second,
                        'microsecond': now.microsecond
                    }
                }
                user_info.append(created_time)
                '''
                print user_info
                coll.insert(user_info)
            else:
                print 'No user_info'
            print "Data where stored in database"
        except:
            print "Some Error Occured"

ドキュメントは次のようになります。

> db.user_info.find().pretty()
{
    "_id" : ObjectId("50d8ded1bdbff3401c252f1a"),
    "ip" : "24.xx.xx.xx",
    "region_code" : "MA",
    "region_name" : "Massachusetts",
    "secret_answer2" : "Mercedes",
    "l_name" : "Flores",
    "f_name" : "Jacob",
    "country_name" : "United States",
        // I want to add next objects to the document
        'created_time': {
            'day': 10,
            'month': 11,
            'year': 12,
            'hour': 11,
            'minute': 11,
            'second': 22,
            'microsecond': 1234
    }
}
4

2 に答える 2

16

pymongo呼び出しでPythonコードが現在の時刻をmongoに渡すようにしたいようです。あなたはこれ:

>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2012, 12, 24, 18, 33, 46, 266943)

完全なコードは次のようになります。

import pymongo
from datetime import datetime

class AccountsDB():
    def __init__(self):
        pass
    def store_info(self, user_info=None):
        try:
            conn = pymongo.Connection('localhost', 27017)
            db_name = 'accountsdb'
            coll_name = 'user_info'
            db = conn[db_name]
            coll = db[coll_name]
            print "Successfully connected to '%s'" % db_name
            if user_info is not None:
                user_info['created_time'] = datetime.now()
                print user_info
                coll.insert(user_info)
            else:
                print 'No user_info'
            print "Data where stored in database"
        except:
            print "Some Error Occured"

a = AccountsDB()
a.store_info({})
于 2012-12-24T23:35:09.527 に答える
6

pymongoは、単に使用する必要があることを示唆していますdatetime.datetime.utcnow()

たとえば、次のコードは現在のUTC日時をMongoDBに保存します。

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

datetime.datetime.now()現在の現地時間を返すのではなく、UTCで現在の時刻を返すdatetime.datetime.utcnow()を常に使用してください。これを避ける:

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

pymongo日時

于 2018-08-15T14:48:13.277 に答える