快速开始
SmartEDB 的 Python API 由一组类组成,这些类封装了构成 SmartEDB 运行时的底层 C 函数。这些类的用法在 Python SDK 示例中有演示。对于初次接触 SmartEDB 的开发人员,我们推荐快速入门教程,以便快速掌握编程基础。有关设置 Python 应用程序环境的说明,请参阅“运行时库”页面;有关使用 Python 实现 SmartEDB 应用程序的一般原则,请参阅“Python 中的应用程序开发”页面。
Python 3 和 Python 轮子(Python wheels)
从 8.2 版本(1801)起,SmartEDB 支持 Python 2.7、3.5-3.8(Linux 和 Windows),以及 Python 2.7、3.7 和 3.8(MacOS)。Python 支持包括一个数据库 API 包装器和 UDF 适配器,允许在 SQL 中执行 Python 编写的用户定义函数。该支持通过 exdb 模块实现,模块以 wheel 形式分发,可通过 PIP 安装。
每个 SmartEDB 软件包包含多个 wheel 文件,位于 target/python/dist 目录下,适用于不同版本的 Python。exdb 模块可安装到全局 Python 环境或 virtualenv/venv 创建的虚拟环境中。
为使 Python 模块能正确加载 SmartEDB 库,启动 Python 前需设置环境变量 MCO_ROOT 到 SmartEDB 目录。对于 Python 编写的 SmartEDB 示例,此变量会自动设置。
用于安装带有 exdb 模块和用户定义函数(UDF)的 wheel 的 Python 工具
PIP
pip 是一个独立的实用程序(对于 Python 3 为 pip 或 pip3)。 需要安装一次 PIP(当系统中不存在 pip 或 pip3 实用程序时),以下是详细说明。 简而言之,应通过以下方式下载 get-pip.py :
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
并使用所需的 Python 版本运行:
python get-pip.py
virtualenv
virtualenv (包含一个实用工具和一个模块)需要安装一次(如果尚未安装),可通过以下方式安装:
pip install virtualenv
或
pip3 install virtualenv
如何创建 Python 虚拟环境并使用它
虚拟环境是通过 virtualenv 工具(或具有相同名称的 Python 模块)创建的一个特殊目录。该目录的命名和位置可以随意设定。虚拟环境可以一次性创建,之后在允许的情况下可重复使用,从而创建具有特定设置和已安装 Python 模块集合的隔离环境。
示例:
virtualenv ./pyenv27
将在 ./pyenv27 目录中创建一个虚拟环境。
在使用之前应当激活虚拟环境。
对于 Linux 和 MacOS 系统,可以按照以下方式进行操作。
../pyenv27/bin/activate
对于 Windows
pyenv27\Scripts\activate.bat
“deactivate”命令会停用当前的虚拟环境。
exdb 模块安装
exdb 模块可以按如下方式安装
pip install ./target/python/dist/exdb_mcobject-0.1.1-cp27-cp27m-linux_x86_64.whl
(适用于 Linux x64 系统上的 Python 2.7 版本)
这既适用于系统自带的 Python 环境,也适用于虚拟环境。
注意:对于在 Linux 和 MacOS 系统上的系统 Python 而言,可能需要 root 权限或者 sudo 权限。
SmartEDB Python wheels 通常被命名为
exdb_mcobject-0.1.1-cpVV-cpVVm-OS_PLATFORM.whl
其中 VV 对应 Python 的版本号。
对于 Linux 系统,有两个版本的 Python 2.7 可用:
exdb_mcobject-0.1.1-cp27-cp27m-linux_x86_64.whl
和
exdb_mcobject-0.1.1-cp27-cp27mu-linux_x86_64.whl .
前者用于 Python 使用 UCS2 编码时,而后者用于 Python 使用 UCS4 编码时。编码可以通过以下方式发现:
当使用 --enable-unicode=ucs4
选项构建时:
>>> import sys
>>> print sys.maxunicode
1114111
当使用 --enable-unicode=ucs2
选项构建时:
>>> import sys
>>> print sys.maxunicode
65535
注意:调用 pip/pip3/virtualenv 实用程序等同于调用 python 来运行 pip/virtualenv 模块。例如:
python -m pip install virtualenv
python -m virtualenv ./pyenv27
python -m pip install ./target/python/dist/exdb_mcobject-0.1.1-cp27-cp27m-linux_x86_64.whl
注意: SmartEDB 的 Python 轮子只需安装一次。安装完成后,exdb 模块即可供 Python 编程语言使用。
Python 运行时库
SmartEDB Python 扩展模块由两部分组成,旨在为您提供更便捷的数据库交互体验。
- exdb.py 是一个用 Python 编写的接口模块,它提供了类定义和接口方法,帮助您轻松调用扩展功能。
- SmartEDB Python 封装器的核心模块是用 C 语言编写的,它与 SmartEDB 数据库系统紧密集成。该模块依赖于特定的 SmartEDB 运行时选项,确保最佳性能和兼容性。
为了顺利使用 SmartEDB Python 封装器,建议您在启动 Python 解释器之前,确保 PYTHONPATH 环境变量已正确设置。默认情况下,封装器会被安装在 SmartEDB SDK 的 target/bin/python 目录中(而不是 Python 的系统级包目录)。如果您有任何疑问或需要进一步的帮助,请随时联系我们,我们将竭诚为您服务。
Windows
对于 Windows 平台的 Python API 支持采用了由 Microsoft Visual Studio 2008 构建的官方 Python 可执行文件。因此,运行 Python 解释器需要使用 Visual Studio 2008 的 C 运行时库(CRT)。(通常情况下,当安装 Python 包时会自动安装 Visual Studio 2008 的 CRT。然而,如果运行时环境中缺少它,可以从微软网站下载可重新分发的 CRT。)
请使用以下链接查看在您的 Windows 系统上安装 Python 的相关说明。
SmartEDB 运行时的调试版本会使用调试 C 运行时库。要加载调试库,只需在调用 exdb.init_runtime() 方法时指定 is_debug=true 即可。如果运行时环境中未安装 Visual Studio 2008 调试库,则尝试使用带有调试 SmartEDB 运行时库的 Python 应用程序会导致“缺少 DLL 文件”的错误。通常情况下,运行 Python 应用程序并非需要处于调试模式。然而,如果这是必需的,有两种选择(请注意,微软并未正式支持在开发/测试环境之外部署调试运行时):
在运行时环境中安装完整的 Visual Studio 2008 版本
仅安装适用于 2008 年的调试版 CRT(C 运行时库)以及相应的清单文件。
如果选择第二种方案,那么从 McObject 支持部门可以获得一个包含所需 DLL 文件的归档文件。
Unix-Linux
如果您要在 64 位的 Linux 系统上安装 32 位版本的 Python,那么您很可能需要重新编译 Python 库。请使用以下链接查看在您的系统上安装 Python 的相关说明。