我一直在阅读有关实现授权(和身份验证)到我新创建的Pyramid应用程序的方法.我不断碰到名为"资源"的概念.我在我的应用程序中使用python-couchdb而根本不使用RDBMS,因此没有SQLAlchemy.如果我像这样创建一个Product对象:
class Product(mapping.Document):
item = mapping.TextField()
name = mapping.TextField()
sizes = mapping.ListField()
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我这是否也被称为资源?我一直在阅读金字塔的整个文档,但没有在哪里用简单的英语解释术语资源(也许我只是愚蠢).如果这是资源,这是否意味着我只是将我的ACL内容粘贴在这里:
class Product(mapping.Document):
__acl__ = [(Allow, AUTHENTICATED, 'view')]
item = mapping.TextField()
name = mapping.TextField()
sizes = mapping.ListField()
def __getitem__(self, key):
return <something>
Run Code Online (Sandbox Code Playgroud)
如果我也使用Traversal,这是否意味着我在我的python-couchdb产品类/资源中添加了getitem函数?
对不起,这真的让所有新条款感到困惑(我来自Pylons 0.9.7).
提前致谢.
我正在尝试使用couchdb.py来创建和更新数据库.我想实现通知更改,最好是在连续模式下.运行下面发布的测试代码,我没有看到更改方案如何在python中工作.
class SomeDocument(Document):
#############################################################################
# def __init__ (self):
intField = IntegerField()#for now - this should to be an integer
textField = TextField()
couch = couchdb.Server('http://127.0.0.1:5984')
databasename = 'testnotifications'
if databasename in couch:
print 'Deleting then creating database ' + databasename + ' from server'
del couch[databasename]
db = couch.create(databasename)
else:
print 'Creating database ' + databasename + ' on server'
db = couch.create(databasename)
for iii in range(5):
doc = SomeDocument(intField=iii,textField='somestring'+str(iii))
doc.store(db)
print doc.id + '\t' + doc.rev
something = db.changes(feed='continuous',since=4,heartbeat=1000) …Run Code Online (Sandbox Code Playgroud) 我正在创建一个应用程序,对于每个产品,我有一个数据库,我将根据日期创建不同的文档.文档中的密钥可能不同,取决于用户,他提供的内容.假设是用户将继续提供相同的密钥以跟踪随时间变化的值.最后,在创建自动视图之前,我需要知道所有可能的键.
示例:如果我有DB,比如说,测试.它包含两个文件,
1. {
"_id":"1",
"_rev":"1-"
"type": "Note",
"content": "Hello World!"
}
2. {
"_id":"2",
"_rev":"1-"
"type": "Note",
"content": "Beyond Hello World!",
"extra":"Boom"
}
然后我想列出此DB中的所有密钥.所以,答案应该是_id,_rev,type,content和extra.
这些密钥是动态的,取决于用户.所以,我不能认为我提前知道了.
我正在编写一个将一些文档加载到 couchdb 的小型 Python 程序。检查具有特定名称的数据库是否已经存在会非常方便,因此我可以创建一个新数据库或打开现有数据库。我想做的是这样的:
import couchdb
def connect(url, dbName):
server = couchdb.Server(url)
if dbName exists: # how do I do this?
return server[dbName]
else:
return server.create(dbName)
Run Code Online (Sandbox Code Playgroud)
我知道 try-except 块可以解决问题,但是没有更优雅的方法吗?
我该怎么做这个简单的事情,我只想要数据库中的文档数。到目前为止,我在 python 中使用循环函数来执行此操作,但这似乎是一种令人难以置信的低效方法。Fauton 会在页面底部告诉您有多少文档,请问我如何在 python 或 javascript 中获得这个数字?