焦基

pycouchbase的Python项目详细描述


https://img.shields.io/travis/ardydedase/pycouchbase.svghttps://img.shields.io/pypi/v/pycouchbase.svg

为什么要在sdk中添加另一层呢?

  • couchbase文档中不一致的数据类型可能是一个真正的难题。
  • 更好地管理多个couchbase连接。
  • 在python源代码中couchbase文档的可读性,同时仍然能够使用couchbase sdk的操作。

功能

  • 它最初是由couchbasekit派生出来的,并受到了couchbasekit的启发。
  • 验证couchbase文档。
  • 将couchbase文档表示为python对象。
  • 轻松管理多个CouchBase连接。
  • 支持Couchbase Python SDK 2.0操作。
  • couchbasekit中已经包含了一些数据检索操作,但是我还没有用pycouchbase对其进行彻底的测试。

安装

在命令行:

$ easy_install pycouchbase

或者,如果安装了virtualenvwrapper:

$ mkvirtualenv pycouchbase
$ pip install pycouchbase

开始

让我们举一个简单的例子。

导入我们需要的所有内容:

importdatetimefrompycouchbaseimportConnectionfrompycouchbaseimportDocument,register_viewfrompycouchbase.fieldsimportEmailField,ChoiceField

声明文档类:

# You can define your own field/data typeclassGender(ChoiceField):CHOICES={'M':'Male','F':'Female',}@register_view('dev_authors')classAuthor(Document):__bucket_name__='couchbasekit_samples'__key_field__='slug'# optionaldoc_type='author'structure={'slug':unicode,'first_name':unicode,'last_name':unicode,'gender':Gender,'email':EmailField,'has_book':bool,'age':int,'birthday':datetime.date,'created_at':datetime.datetime,}default_values={# optional'has_book':False,# don't worry about the timezone info!# it's auto assigned as to UTC, so all you have to do is:'created_at':datetime.datetime.utcnow,}required_fields=(# optional'slug','first_name','last_name','email',)

验证并保存文档:

local_connection=Connection.auth(server='localhost')author=Author()bucket=author.get_bucket(local_connection)author.update({'slug':u'douglas_adams','first_name':u'Douglas','last_name':u'Adams','gender':Gender('M'),'email':EmailField('dna@example.com'),})# Try to validate before savingtry:author.validate()try:rvs=bucket.insert(author.slug,author.encode())exceptKeyExistsErroraswhy:print(why)exceptAuthor.StructureErroraswhy:# when the data structure is invalidprint(why)

保存多个文档:

local_connection=Connection.auth(server='localhost')author=Author()list_data=[{'slug':u'douglas_adams','first_name':u'Douglas','last_name':u'Adams','gender':Gender('M'),'email':EmailField('dna@example.com'),},{'slug':u'isaac_asimov','first_name':u'Isaac','last_name':u'Asimov','gender':Gender('M'),'email':EmailField('dna@example.com'),}]try:bucket=author.get_bucket(local_connection)updated_authors={}fordinlist_data:author.update(d)try:# validate!author.validate()updated_authors.update({d['slug']:author.encode()})exceptauthor.StructureErroraswhy:print(why)# save multiple datarvs=bucket.upsert_multi(updated_authors)exceptCouchbaseNetworkErroraswhy:print(why)

管理多个连接:

connection_1=Connection.auth(server='server_1')connection_2=Connection.auth(server='server_2')# where doc_1 and doc_2 are document objectsbucket_1=doc_1.get_bucket(connection_1)bucket_2=doc_2.get_bucket(connection_2)

bucket对象可以支持任何Couchbase Python SDK 2.0操作:

bucket_1.get('key_or_id')bucket_1.insert('key_or_id',value)

有关couchbase sdk支持的操作的详细信息,请参见:http://docs.couchbase.com/developer/python-2.0/introduction.html

历史记录

0.1.0(2015-01-11)

  • pypi上的第一个版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java流收集组合器   文件如何在java中逐个压缩选定的多个文件夹   从Google存储下载数据时发生java SocketTimeoutException   java在安卓应用程序客户端上从python服务器接收值,然后显示与该值对应的mysql数据   数组如何在Java中测试字符串索引是否为Null   java将一串值拆分并放入一个表中   java Spring Memcached注释不缓存   调用pom中设置的环境变量时出现java问题。xml surefire插件   java修复JFrame中重叠的鼠标侦听器   格式化java。sql。日期至yyyyMMdd   java声音剪辑。如果剪辑不正确,isActive应返回true。启动被调用   无根计算机上hadoop中的java格式化namenode   从字符串数组中删除重复项,而无需在Java中进行显式比较   java Eclipse插件安装错误   java webdriver无法在firefox中单击超链接   动画错误。朗。反思。调用目标异常   java试图调用虚拟方法“void”。小装置。编辑文本。在空对象引用上添加TextChangedListener(安卓.text.TextWatcher)”