我知道这个问题已经被一个或两个人问过了,但它与我所想的不同。请多多包涵。如何开始在另一个包装器上编写python包装?
我想写一个包装现有的couchdb-python包装。原因是,如果我们决定在将来切换到另一个NoSQL数据库,例如MongoDB,我只需要更改我的代码库的一部分。
问题1:鉴于上述情况,这是建议的正确的行动方案吗?
访问数据库需要使用couchdb-python包装器访问couchdb的问题,有时(并非所有时间),用户名/密码都是必需的。这就是它看起来像在代码:
server = Server() <---- When no username/password is required
server = Server('http://abc:[email protected]:5984') <---- When username/password is required
我将如何界定inital 初始化功能,以应付这两种方案。我现在有这样的想法:
from couchdb import Server
class Couch(object):
""" CouchDB Wrapper """
COUCHDB_URI = {username_not_provided: 'http://localhost:5984',
username_provided: 'http://%s:%[email protected]:5984'}
def __init__(self, username=None, password=None):
if username and password:
self.url = COUCHDB_URI['username_provided'] % (username, password)
else:
self.url = COUCHDB_URI['username_not_provided']
self.server = Server(self.url)
我觉得代码看起来很丑,有人能指出我对上述的正确方向吗?
谢谢大家!我非常感谢帮助。
感谢您的输入,但我确实在寻找答案和JDI答案的组合。我想知道是否有可能将观点授予你们两个人。 – Mark 2012-01-09 02:23:09