Connecting to Couchbase#
Data Science & AI Workbench enables you to connect to a Couchbase NoSQL database from within your notebook sessions.
To do so, you’ll need to do the following to install the essential elements required to connect to a Couchbase server:
Download the release RPM from Couchbase to set up the Couchbase repository:
wget http://packages.couchbase.com/releases/couchbase-release/couchbase-release-1.0-4-x86_64.rpm
Install the RPM using yum:
sudo yum localinstall couchbase-release-1.0-4-x86_64.rpm -y
Install the packages required to install the pip package:
sudo yum install libcouchbase-devel libcouchbase2-bin gcc gcc-c++ -y
Install the pip package:
pip install couchbase
Note
Any packages you install from the command line are available during the current session only. If you want them to persist, add them to the project’s anaconda-project.yml
file. For more information, see Project configurations.
You can then use code such as this to import the modules and connect to Couchbase from within a notebook session:
# Import the modules
from couchbase.cluster import Cluster
from couchbase.cluster import PasswordAuthenticator
import json
"""
Get credentials from Kubernetes. The credentials were set up as a dictionary. For example:
{
"username": "USERNAME",
"password": "PASSWORD"
}
"""
credentials = None
with open('/var/run/secrets/user_credentials/couchbase_credentials') as f:
credentials = json.load(f)
# Verify the credentials were pulled correctly
if credentials:
# Try the connection and pass in authentication details
bucket = None
try:
cluster = Cluster(f"couchbase://{credentials.get('hostname')}")
cluster.authenticate(
PasswordAuthenticator(
credentials.get('username'),
credentials.get('password')
)
)
bucket = cluster.open_bucket('beer-sample')
except Exception as e:
print(f'There was an error connecting to the bucket: {e}')
# Confirm the bucket is connected
if bucket and bucket.connected:
# Get a value from the bucket by index and print out the result
print(json.dumps(bucket.get('21st_amendment_brewery_cafe').value, indent=4))
# Close connection
bucket._close()