数据库连接
Python 应用程序通过调用 Database 类的 connect() 方法来连接数据库(创建数据库句柄)。该数据库必须已打开,如果数据库位于共享内存中,则可能是在另一个进程中打开的。例如:
db = exdb.open_database("myopendb", dict)
con = db.connect();
db.connect()
函数会返回一个数据库连接,该连接会在后续对数据库 API 的调用中使用。请注意,所有应用程序都必须为每个访问数据库的线程(任务)创建单独的连接;数据库连接不能在不同的线程或任务之间共享。 应用程序在不再需要数据库连接时应断开连接,以便数据库运行时能够“释放”用于维护连接的内部内存。Python 应用程序通过调用 con.close()
来断开与数据库的连接。在所有活动连接都关闭之前,数据库无法被销毁(关闭)。
示例
连接到内存数据库的典型应用程序代码可能如下所示:
db = exdb.open_database("myopendb", dict)
con = db.connect();
...
con.close()
db.close()
异步分布式连接
可以使用 exdb.connect()
方法连接到 AsyncDistributedSqlEngine
,从而在数据库分片上并行处理多个 SQL 查询。然后使用 execute()
方法在多个分片上执行 SQL 语句。例如,以下代码片段创建到 AsyncDistributedSqlEngine
的连接,创建 SQL 语句字符串和参数向量,然后在 4 个数据库分片上并行执行这些语句,并打印出结果。
nWorkers = 4
nodes = ("localhost:5001", "localhost:5002")
conn = self.exdb.connect(nodes=nodes, async=True, nWorkers=nWorkers)
q = ["INSERT INTO MyTable(pk, value, u2, i1, i2, i4, i8, flt, dbl) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"]*nWorkers
args = []
for i in xrange(nWorkers):
args.append((i*100, 'str%s' % i, i, i, i, i, i, i*100, i*100.9))
r = conn.execute(q, args)
print "len(r)=", len(r)
for k in range(len(r)):
pprint.pprint(r[k])