python 数据库驱动开发实例_Python开发基础

Python开发基础

本节介绍使用 Python 运行 SequoiaDB。首先安装 SequoiaDB,安装信息请查看安装章节。

同时将介绍如何使用Python客户端驱动接口编写使用 SequoiaDB 巨杉数据库的程序。为了简单起见,下面的示例不全是完整的代码,只起示例性作用。可到SequoiadDB安装路径下samples/Python下获取相应的完整的代码。更多查看Python API

Note:

在 Python 中构造 BSON 时默认使用dict,dict的字段是无序的。

如果要求 BSON 中的字段顺序与输入顺序一致(例如,创建索引时索引键的定义),请使用collections.OrderedDict。

数据库操作

数据库连接(Connecting)

以下是connect.py演示如何连接到数据库。

import pysequoiadb

from pysequoiadb import client

# connect to local db, using default args value.

host = 'localhost'

port = 11810

# user= '', password= ''

db = client(host, port)

# if no error occurs, connect to specified server successfully

print 'Connect success'

db.disconnect()

在Linux下,可以直接运行python解释执行connect.py。

Note:

本例程连接到本地数据库的服务端口11810,使用的是空的用户名和密码。用户需要根据自己的实际情况配置参数。譬如,将上述代码中的 db = client() 修改为 db = client('192.168.10.188', 11810)。当数据库已经创建用户时,应该使用正确的用户及密码连接到数据库,否则连接失败。

创建集合空间和集合

以下创建了一个名字为“sample”的集合空间和一个名字为“employee”的集合,集合空间内的集合的数据页大小为16k。可根据实际情况选择不同大小的数据页。创建集合后,可对集合做增删改查等操作。

# connect to db

db = client("localhost", 11810)

# create collection space

cs_name = 'sample'

cs = db.create_collection_space(cs_name)

cl_name = 'employee'

cl = cs.create_collection(cl_name)

插入数据(insert)

# creat dict object

record = {"name":"Tom", "age":24}

oid = cl.insert ( record ) ;

record为输入参数,为要插入的数据。dict对象将会被转换成bson插入到集合中。oid 是插入该记录时,返回的bson结构的objectid。

查询(query)

import pysequoiadb

from pysequoiadb import client

from pysequoiadb.error import SDBEndOfCursor

cr = cl.query()

while True:

try:

record = cr.next()

print(record)

except SDBEndOfCursor:

break

finally:

cr.close()

查询操作需要一个游标对象存放查询的结果到本地。要获得查询的结果需要使用游标操作。本例使用了游标操作的next接口,表示从查询结果中取到一条记录。此示例中没有设置查询条件,筛选条件,排序情况,及仅使用默认索引。

索引(index)

index_name = "index_name"

idx = OrderedDict([('name', 1), ('age', -1)])

cl.create_index ( idx, index_name, False, False ) ;

集合对象collection中创建一个以“name”为升序,“age”为降序的索引。

更新(update)

rule = {"$set":{ "age":19}}

print rule

cl.update( rule )

在集合对象 ollection中更新了记录。实例中没有指定数据匹配规则,所以此示例将更新集合中所有的集合。

错误处理

调用 API 遇到的异常时,python 驱动会将异常直接抛出。可以选择捕获异常,并打印异常信息或是进行一些其他操作。SDBBaseError 异常是基础异常,异常主要包含errcode、detail 和 error_object。异常的详情可以查询 Python API。示例如下:

try:

cl = db.get_collection("sample.employee")

condition = {"_id":{"$oid":"5d035e2bb4d450b04fcd0dff"}}

cl.delete ( condition=condition )

except SDBBaseError as e:

print(e.detail)

"""

异常信息为:

pysequoiadb.error.SDBInvalidArgument: SDB_INVALIDARG(-6), Invalid Argument, detail: Failed to delete

"""

集群操作

分区组操作包括创建分区组(client::creat_replica_group),得到分区组实例(client:: get_replica_group_by_name 和 client:: get_replica_group_by_id),启动分区组所有节点(replicagroup::start),停止分区组所有节点(replicagroup::stop)等。

分区组操作

以下仅作为示例,真正的应用应包括错误检测等。

rg = db.create_replica_group ("group1")

config = {}

rg.create_node ('ubuntu-test-03', '20000', "/opt/sequoiadb/database/20000", config)

rg.start ()

创建名为group1的数据组。创建节点时,定义一个空的map对象config表示该节点没有更多的配置内容。

节点操作

节点操作包括创建节点(replicagroup::create_node),获取主节点(replicagroup::get_master),获取备节点(replicagroup::get_slave),启动节点(replicanode::start),停止节点(replicanode::stop)等。

以下为数据节点操作示例性的例子。真正的应用应包括错误检测等。

# 获取数据组group

rg = db.get_replica_group_by_name("group1")

# 获取数据主节点

master = rg.get_master() ;

# 获取数据备节点

slave = rg.get_slave() ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值