在执行任何CRUD操作之前,首先需要连接到本地 CouchDB 数据库。如果正在运行 CouchDB 3 或更高版本,在连接到数据库时,指定用户凭证在 URL 中非常重要。
import couchdb
server = couchdb.Server('http://admin:password@localhost:5984/') # 连接到本地服务器
server <Server 'http://127.0.0.1:5984/'>
现在已经连接到了数据库,让首先看看数据库操作。要创建一个新的数据库,使用 "create()" 函数,它接受要创建的数据库名称。下面的代码创建了一个名为 "sample_database" 的数据库。
db = server.create('sample_database') # 创建数据库
要使用现有的数据库,可以直接使用服务器对象通过将数据库名称指定为键来访问它。让尝试使用服务器对象访问上面创建的数据库。
server['sample_database'] # 访问现有数据库
可以使用 Python 中的 del 命令来删除现有数据库。它就像访问现有数据库一样,但是前面加上了 "del" 关键字。
del server['sample_database'] # 删除数据库
现在已经了解了如何创建、使用和删除数据库,让看看如何执行CRUD操作。首先,创建一个名为 "employee_info" 的数据库。
db = server.create('employee-info')
是时候将文档插入到刚刚创建的数据库中了。让插入一些包含员工详细信息的文档,包括他们的姓名、年龄、国家和他们知道的编程语言。新文档可以使用 "save" 命令插入到数据库中,它接受字典对象作为参数,并返回一个唯一的文档 ID 和修订号。
# 插入文档
db = server['employee-info']
employee_details_1 = {
'name': 'Vishnu',
'age': 22,
'country': 'India',
'programming_languages': ['python', 'C++', 'C#']
}
employee_details_2 = {
'name': 'Sanjay',
'age': 21,
'country': 'India',
'programming_languages': ['C++', 'C#', 'javascript']
}
employee_details_3 = {
'name': 'Arjun',
'age': 30,
'country': 'Germany',
'programming_languages': ['python', 'nodejs']
}
doc_id, doc_rev = db.save(employee_details_1)
db.save(employee_details_2)
db.save(employee_details_3)
doc_id, doc_rev
('0bba8f74f5974cb204d4270e6d000c14', '1-54ad9527cac88effa0545271cf3acb11')
现在已经将文档插入到数据库中,让尝试获取一个文档。文档可以使用返回的文档 ID 从数据库中获取,当文档被插入到数据库中时会返回文档 ID。
doc = db['0bba8f74f5974cb204d4270e6d000c14'] # 获取文档
doc['name']
'Vishnu'
除了使用它们的唯一文档 ID 获取文档外,要在 CouchDB 中使用搜索查询,使用称为 mango 查询的东西,它类似于 mongo 查询。让看几个例子来看看这在行动中的样子。让尝试搜索所有年龄超过 23 的员工。
mango = {'selector': {'age': {'$gt':23}}}
for i in db.find(mango): print(i)
如果熟悉 mongo 查询,相同的查询将适用于 MongoDB。正如前面提到的,mango 查询与 mongo 查询非常相似,具有 MongoDB 知识的人可以轻松使用 CouchDB,无需任何麻烦。现在让尝试找到名字为 "Sanjay" 的员工,但问题是只想获得他的姓名和年龄信息,而不是所有数据。
mango = {'selector': {'name':'Sanjay'}, 'fields': ['name', 'age']}
就像 fields 参数一样,find 函数还接受一个名为 "sort" 的键,可以用来对查询结果进行排序。
for i in db.find(mango): print(i)
db['John'] = {
'name': 'John',
'age': 36,
'country': 'USA',
'programming_languages': ['java']
}
db['John']
data = db['John']
data['age'] = 40 # 更新年龄
db['John'] = data
db['John']
db.delete(db['John'])