Python 驱动连接 OceanBase 数据库

本文介绍如何通过 Python 驱动连接和使用 OceanBase 数据库。不同版本的 Python 环境需要使用不同的驱动,Python 3.x 系列需要使用 PyMySQL 驱动,Python 2.x 系列需要使用 MySQL-python 驱动。

前提条件

确保本地已部署 Python 语言运行环境。

Python 3.x 连接 OceanBase 数据库

Python 3.x 需要 PyMySQL 驱动进行 OceanBase 数据库连接及使用。

步骤一:获取数据库连接参数

参考 获取连接参数 文档,获取相应的租户连接参数,例如:

$ obclient -hxxx.xxx.xxx.xxx -P3306 -u a**** -p****** -Dtest

数据库连接参数包含了访问数据库所需的参数信息,在验证示例代码前,可通过数据库连接参数验证登录数据库,保证信息正确。

参数说明:

  • -h:OceanBase 数据库连接的域名。

  • -P:OceanBase 数据库连接端口,MySQL 模式租户默认是 3306。

  • -u:租户的连接账号。

  • -p:账号密码。

  • -D:数据库名称。

步骤二:安装 PyMySQL 驱动

PyMySQL 是在 Python 3.x 版本中用于连接 MySQL 服务器的一个库。PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。

有关 PyMySQL 的详细信息,请参考 PyMySQL 官网相关 API 参考文档

PyMySQL 有以下两种安装方式:

  • 使用命令行安装

    $ python3 -m pip install PyMySQL
  • 源码编译安装

    1. 克隆源码。

      $ git clone https://github.com/PyMySQL/PyMySQL
    2. 切换到 PyMySQL 目录。

      $ cd PyMySQL/
    3. 编译安装。

      $ python3 setup.py install

步骤三:编写示例代码

编辑运行示例test.py,代码如下:

#!/usr/bin/python3

import pymysql

conn = pymysql.connect(host="xxx.xxx.xxx.xxx", port=3306,
 user="a****", passwd="******", db="test")

cur = conn.cursor()

try:

 #创建表 cities
 sql = 'create table cities (id int, name varchar(24))'
 cur.execute(sql)

 #往 cities 表中插入两组数据
 sql = "insert into cities values(1,'hangzhou'),(2,'shanghai')"
 cur.execute(sql)

 #查询 cities 表中的所有数据
 sql = 'select * from cities'
 cur.execute(sql)
 ans = cur.fetchall()
 print(ans)

 #删除表 cities
 sql = 'drop table cities'
 cur.execute(sql)

finally:
 cur.close()
 conn.close()

修改代码中的数据库连接参数。参考如下字段,对应的值,则取自步骤一获取的数据库连接参数。

  • user:取自 -u 参数,租户的连接账号。

  • password:取自 -p 参数,账号密码。

  • host:取自 -h 参数,OceanBase 数据库连接的域名。

  • port:取自 -P 参数,OceanBase 数据库连接端口,MySQL 模式租户默认是 3306。

  • db:取自 -D 参数,数据库名称。

步骤四:运行示例代码

代码编辑完成后,运行 test.py

$ python3 test.py

返回以下结果,说明数据库连接成功,示例语句正确执行。

((1, 'hangzhou'), (2, 'shanghai'))

Python 2.x 连接 OceanBase 数据库

Python 2.x 需要 MySQL-python 驱动进行 OceanBase 数据库连接及使用。MySQL-python 是 Python2.x 版本中用于连接数据库的一个库。

步骤一:获取数据库连接参数

参考 获取连接参数 文档,获取相应的租户连接参数,例如:

$ obclient -hxxx.xxx.xxx.xxx -P3306 -u a**** -p****** -Dtest

数据库连接参数包含了访问数据库所需的参数信息,在验证示例代码前,可通过数据库连接参数验证登录数据库,保证信息正确。

参数说明:

  • -h:OceanBase 数据库连接的域名。

  • -P:OceanBase 数据库连接端口,MySQL 模式租户默认是 3306。

  • -u:租户的连接账号。

  • -p:账号密码。

  • -D:数据库名称。

步骤二:安装 MySQL-python 驱动

MySQL-python 是 Python 连接 MySQL 数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 建立。

有关 MySQL-python 的详细信息,您可参考 MySQL-python 官网Github 文档

MySQL-python 驱动可以通过 yum 安装,命令如下:

$ yum install MySQL-python

步骤三:编写示例代码

编辑运行示例test2.py,代码如下:

#!/usr/bin/python2

import MySQLdb

conn= MySQLdb.connect(
 host='xxx.xxx.xxx.xxx',
 port = 3306,
 user='a****',
 passwd='******',
 db ='test'
)


cur = conn.cursor()

try:

 #创建表 cities
 sql = 'create table cities (id int, name varchar(24))'
 cur.execute(sql)

 #往 cities 表中插入两组数据
 sql = "insert into cities values(1,'hangzhou'),(2,'shanghai')"
 cur.execute(sql)

 #查询 cities 表中的所有数据
 sql = 'select * from cities'
 cur.execute(sql)
 ans = cur.fetchall()
 print(ans)

 #删除表 cities
 sql = 'drop table cities'
 cur.execute(sql)

finally:
 cur.close()
 conn.close()

修改代码中的数据库连接参数。参考如下字段,对应的值,则取自步骤一获取的数据库连接参数。

  • host:取自 -h 参数,OceanBase 数据库连接的域名。

  • user:取自 -u 参数,租户的连接账号。

  • passwd:取自 -p 参数,账号密码。

  • port:取自-P参数,OceanBase 数据库连接端口,MySQL 模式租户默认是 3306。

  • db:取自-D参数,数据库名称。

步骤四:运行示例

代码编辑完成后,运行test.py

$ python test.py

返回以下结果,说明数据库连接成功,示例语句正确执行

((1L, 'hangzhou'), (2L, 'shanghai'))
阿里云首页 云数据库 OceanBase 版 相关技术圈