Python Client

Introduction

A while back we released our first python connector blog. Since then, things have gotten a bit easier to install and use due to the C_Client gaining an RPM package and CentOS coming with PCRE by default now.

Video

If you would prefer to follow along with a video, please take a look here:

As an added bonus, the video will go over some very simple source code as well.

Installation

Install c_client

This small excerpt is taken from our Node.js Client Blog

The GridDB c_client (a preqrequisite to using the Python Client) can be found here: https://github.com/griddb/c_client. The c_client installation has been simplified since the last blog; instead of compiling from source yourself, there is now an RPM available for your convenience (the releases page can be found here). So to get started simply wget the latest RPM and install.

$ wget \
https://github.com/griddb/c_client/releases/download/v4.2.0/griddb_c_client-4.2.0-1.linux.x86_64.rpm

then we need to actually install the rpm

$ sudo rpm -ivh griddb_c_client-4.2.0-1.linux.x86_64.rpm

and now the c_client is installed and ready in your /usr/ directory. That was easy!

Install Python Client

Installing the Python Client is slightly more involved but still a very easy process. First, let’s download the file from GitHub

$ wget \
https://github.com/griddb/python_client/archive/0.8.1.tar.gz

Next, let’s unzip

$ tar xvzf 0.8.1.tar.gz

and let’s install the prereqs

$ wget https://prdownloads.sourceforge.net/swig/swig-3.0.12.tar.gz
tar xvfz swig-3.0.12.tar.gz
cd swig-3.0.12
./configure
make 
sudo make install

And then we may need to install pcre as well

$ sudo yum install pcre2-devel.x86_64

Now of course we actually make our Python Client

$ cd ../python_client
make

If by chance you encounter the following error when attempting to make your Python Client

/usr/bin/ld: cannot find -lgridstore

do not worry: it is an easy fix. The issue lies with needing your Makefile to point to your c_client. This means the only thing we need to do is add the c_client/bin location in the LDFLAGS option

SWIG = swig -DSWIGWORDSIZE64
    CXX = g++
    
    ARCH = $(shell arch)
    
    LDFLAGS = -L/home/israel/c_client/bin -lpthread -lrt -lgridstore #added /home/israel/c_client_bin right here
    
    CPPFLAGS = -fPIC -std=c++0x -g -O2
    INCLUDES = -Iinclude -Isrc
    
    INCLUDES_PYTHON = $(INCLUDES)   \
                                    -I/usr/include/python3.6m
    
    PROGRAM = _griddb_python.so
    EXTRA = griddb_python.py griddb_python.pyc
    
    SOURCES =         src/TimeSeriesProperties.cpp \
                      src/ContainerInfo.cpp                 \
                      src/AggregationResult.cpp     \
                      src/Container.cpp                     \
                      src/Store.cpp                 \
                      src/StoreFactory.cpp  \
                      src/PartitionController.cpp   \
                      src/Query.cpp                         \
                      src/QueryAnalysisEntry.cpp                    \
                      src/RowKeyPredicate.cpp       \
                      src/RowSet.cpp                        \
                      src/TimestampUtils.cpp                        \
    
    all: $(PROGRAM)
    
    ... snip ...

With the fix in place, make should work as intended. Next up: setting our environment variables. We just need to point to the proper locations:

$ export LIBRARY_PATH=$LIBRARY_PATH:[insert path to c_client]
$ export  PYTHONPATH=$PYTHONPATH:[insert path to python_client]
$ export LIBRARY_PATH=$LD_LIBRARY_PATH:[insert path to c_client/bin]

Now we should be able to use both c and python with our GridDB Cluster.

Sample Code

Usage with Python is fairly straight forward, so we won’t spent too much time here. However, if you are interested, you can check out the video posted on top. To follow along, please download the source code here: [download id=”26145″]

If you have any questions about the blog, please create a Stack Overflow post here https://stackoverflow.com/questions/ask?tags=griddb .
Make sure that you use the “griddb” tag so our engineers can quickly reply to your questions.

One Comment

Comments are closed.