2011-11-14 21 views
0

我从下面的http://packages.python.org/CouchDB/mapping.html CouchDB的教程。这似乎已经过时了,因为这些模块根据程序不工作。所以我只写了CouchDB python脚本来存储一些值,这里是我的脚本。但是,当我查找CouchDB的数据库,我能找到的姓名和年龄,但日期值不存储。有人能告诉我如何去做这件事吗?还有更新的python CouchDB教程吗?的CouchDB的Python存储日期值

from couchdb import Server, Document 
from couchdb.mapping import TextField, IntegerField, DateTimeField 
import datetime 

class Person(Document): 
    name = TextField() 
    age = IntegerField() 
    added = DateTimeField(default=datetime.datetime.now()) 

if __name__ == '__main__': 
    server = Server('http://localhost:5984') 
    try: 
     db = server.create('person') 
    except Exception: 
     db = server['person'] 

    person = Person(name='John Doe', age=42) 
    db.save(person) 

回答

0

CouchDB的例子是指datetime.now默认值,但使用的是datetime.datetime.now()。额外的datetime不是问题,但您可能需要考虑使用from datetime import datetime以提高可读性。

的问题是,你调用一个函数,返回它的价值,而示例将一个函数对象,CouchDB的可以调用任何时候,它需要一个默认值。

摆脱两个括号,你应该确定。

+0

谢谢,这是有道理的。即使删除了括号,couchdb也不显示数据。 – Rkz

+0

您是否创建新记录?当您创建新的Couchdb记录时,'default'只会起作用。 –

+0

db.save(person)创建一条新记录,我在新记录中看到名称和年龄,因为我传递了这些参数。 – Rkz

0

我遇到了同样的问题,一眼代码后,我发现有2个Document类!如果您要使用现场映射,请改为使用couchdb.mapping.Document