Python 3 and Python wheels

Starting with Release 8.2 (build 1801) eXtremeDB supports Python versions 2.7, 3.5, 3.6, 3.7, 3.8 on Linux and Windows, as well as versions 2.7, 3.7 and 3.8 on MacOS.

eXtremeDB's Python support consists of a wrapper (Python database API) and the UDF adapter (allowing execution of user defined procedures/functions written in Python from within SQL statements and queries). It is implemented as the Python module exdb which is distributed as a Python wheel that can be installed via the standard means (PIP).

Each eXtremeDB package includes several wheels (one for each supported version of Python). They are located in the package subdirectory target/python/dist.

A wheel with the exdb module can be installed into Python itself as well as into Python's virtual environment created with virtualenv or venv.

In order for the Python module to be able to find and load eXtremeDB libraries, you must set the environment variable MCO_ROOT to the location of eXtremeDB directory before launching the Python process. Note: for eXtremeDB samples written in Python, this environment variable is set automatically.

Python tools for installation of a wheel with exdb module and UDF

PIP

PIP is a standalone utility (pip or pip3 for Python 3).

PIP needs to be installed once (when pip/pip3 utility is absent in the system), here is the detailed description.

Briefly speaking, get-pip.py should be downloaded via

 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
				

and run with the desired version of Python:

 python get-pip.py
				

or

 python get-pip.py
				

 

virtualenv

virtualenv (consists of an utility and a module) needs to be installed once (if absent) via

 pip install virtualenv
                                

or

 pip3 install virtualenv
				

How to create a Python virtual environment and work with it

A virtual environment is a special directory created with the virtualenv utility (or a Python module with the same name). This directory can be named and located arbitrarily. A virtual environment can be created once and reused after allows creating isolated environments with specific settings and sets of installed Python modules.

Example:

 virtualenv ./pyenv27
                                

will create a virtual environment in the ./pyenv27 directory.

A virtual environment should be activated prior to use.

For Linux and MacOS it can be done as follows

 . ./pyenv27/bin/activate
                                

for Windows

 pyenv27\Scripts\activate.bat
                                

The deactivate command deactivates the current virtual environment.

exdb module installation

exdb module can be installed as follows

 pip install ./target/python/dist/exdb_mcobject-0.1.1-cp27-cp27m-linux_x86_64.whl
                                

(for Python 2.7 on Linux x64)

This is applicable both to system Python and to virtual environments.

Note: for system Python on Linux and MacOS, root privileges or privileges for sudo may be required.

eXtremeDB Python wheels are generally named as

exdb_mcobject-0.1.1-cpVV-cpVVm-OS_PLATFORM.whl

where VV corresponds to the version number of Python.

For Linux two wheels are available for Python 2.7 :

exdb_mcobject-0.1.1-cp27-cp27m-linux_x86_64.whl and exdb_mcobject-0.1.1-cp27-cp27mu-linux_x86_64.whl .

The former is used when Python uses encoding UCS2, while the latter is used when Python uses encoding UCS4. Encoding can be discovered as follows:

When built with --enable-unicode=ucs4:

 >>> import sys
 >>> print sys.maxunicode
 1114111
                                

When built with --enable-unicode=ucs2:

 >>> import sys
 >>> print sys.maxunicode
 65535
                                

Note: invocation of pip/pip3/virtualenv utilities is equal to invocation of python for modules pip/virtualenv. For example:

 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
                                

Note:

eXtremeDB's Python wheel should be installed once. After that, the module exdb will become available for use with the Python programming language.