簡體   English   中英

使用pymongo將當前時間插入mongo

[英]insert current time into mongo using pymongo

當創建新文檔時,我正在嘗試以特定格式存儲當前時間。 以下是調用不工作方法的代碼部分:

    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
    }
}

看起來你想讓python代碼在pymongo調用中將當前時間傳遞給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({})

pymongo建議您只需使用datetime.datetime.utcnow()

例如,以下代碼將當前UTC日期和時間存儲到MongoDB中:

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

始終使用datetime.datetime.utcnow(),它返回UTC的當前時間,而不是datetime.datetime.now() ,它返回當前的本地時間。 避免這樣做:

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

pymongo datetimes

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM