Python Client for Couchbase Analytics
Project description
Couchbase Python Analytics Client
Python client for Couchbase Analytics.
Currently Python 3.9 - Python 3.13 is supported.
The Analytics SDK supports static typing. Currently only mypy is supported. You mileage may vary (YMMV) with the use of other static type checkers (e.g. pyright).
Installing the SDK
Note: It is strongly recommended to update pip, setuptools and wheel prior to installing the SDK:
python3 -m pip install --upgrade pip setuptools wheel
Install the SDK via pip:
python3 -m pip install couchbase-analytics
Installing the SDK from source
The SDK can be installed from source via pip with the following command.
Install the SDK via pip:
python3 -m pip install git+https://github.com/couchbase/analytics-python-client.git
Using the SDK
Some more examples are provided in the examples directory.
Connecting and executing a query
from couchbase_analytics.cluster import Cluster
from couchbase_analytics.credential import Credential
from couchbase_analytics.options import QueryOptions
def main() -> None:
# Update this to your cluster
# IMPORTANT: The appropriate port needs to be specified. The SDK's default ports are 80 (http) and 443 (https).
# If attempting to connect to Capella, the correct ports are most likely to be 8095 (http) and 18095 (https).
# Capella example: https://cb.2xg3vwszqgqcrsix.cloud.couchbase.com:18095
endpoint = 'https://--your-instance--'
username = 'username'
pw = 'password'
# User Input ends here.
cred = Credential.from_username_and_password(username, pw)
cluster = Cluster.create_instance(endpoint, cred)
# Execute a query and buffer all result rows in client memory.
statement = 'SELECT * FROM `travel-sample`.inventory.airline LIMIT 10;'
res = cluster.execute_query(statement)
all_rows = res.get_all_rows()
for row in all_rows:
print(f'Found row: {row}')
print(f'metadata={res.metadata()}')
# Execute a query and process rows as they arrive from server.
statement = 'SELECT * FROM `travel-sample`.inventory.airline WHERE country="United States" LIMIT 10;'
res = cluster.execute_query(statement)
for row in res.rows():
print(f'Found row: {row}')
print(f'metadata={res.metadata()}')
# Execute a streaming query with positional arguments.
statement = 'SELECT * FROM `travel-sample`.inventory.airline WHERE country=$1 LIMIT $2;'
res = cluster.execute_query(statement, QueryOptions(positional_parameters=['United States', 10]))
for row in res:
print(f'Found row: {row}')
print(f'metadata={res.metadata()}')
# Execute a streaming query with named arguments.
statement = 'SELECT * FROM `travel-sample`.inventory.airline WHERE country=$country LIMIT $limit;'
res = cluster.execute_query(statement, QueryOptions(named_parameters={'country': 'United States',
'limit': 10}))
for row in res.rows():
print(f'Found row: {row}')
print(f'metadata={res.metadata()}')
if __name__ == '__main__':
main()
Using the async API
import asyncio
from acouchbase_analytics.cluster import AsyncCluster
from acouchbase_analytics.credential import Credential
from acouchbase_analytics.options import QueryOptions
async def main() -> None:
# Update this to your cluster
# IMPORTANT: The appropriate port needs to be specified. The SDK's default ports are 80 (http) and 443 (https).
# If attempting to connect to Capella, the correct ports are most likely to be 8095 (http) and 18095 (https).
# Capella example: https://cb.2xg3vwszqgqcrsix.cloud.couchbase.com:18095
endpoint = 'https://--your-instance--'
username = 'username'
pw = 'password'
# User Input ends here.
cred = Credential.from_username_and_password(username, pw)
cluster = AsyncCluster.create_instance(endpoint, cred)
# Execute a query and buffer all result rows in client memory.
statement = 'SELECT * FROM `travel-sample`.inventory.airline LIMIT 10;'
res = await cluster.execute_query(statement)
all_rows = await res.get_all_rows()
# NOTE: all_rows is a list, _do not_ use `async for`
for row in all_rows:
print(f'Found row: {row}')
print(f'metadata={res.metadata()}')
# Execute a query and process rows as they arrive from server.
statement = 'SELECT * FROM `travel-sample`.inventory.airline WHERE country="United States" LIMIT 10;'
res = await cluster.execute_query(statement)
async for row in res.rows():
print(f'Found row: {row}')
print(f'metadata={res.metadata()}')
# Execute a streaming query with positional arguments.
statement = 'SELECT * FROM `travel-sample`.inventory.airline WHERE country=$1 LIMIT $2;'
res = await cluster.execute_query(statement, QueryOptions(positional_parameters=['United States', 10]))
async for row in res:
print(f'Found row: {row}')
print(f'metadata={res.metadata()}')
# Execute a streaming query with named arguments.
statement = 'SELECT * FROM `travel-sample`.inventory.airline WHERE country=$country LIMIT $limit;'
res = await cluster.execute_query(statement, QueryOptions(named_parameters={'country': 'United States',
'limit': 10}))
async for row in res.rows():
print(f'Found row: {row}')
print(f'metadata={res.metadata()}')
if __name__ == '__main__':
asyncio.run(main())
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file couchbase_analytics-1.0.0.tar.gz.
File metadata
- Download URL: couchbase_analytics-1.0.0.tar.gz
- Upload date:
- Size: 69.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31dafbf761371f82da9d1ad52fe3e33bcd85c6592513defc01fc0b55d4877723
|
|
| MD5 |
a23519a1f9b7fea0ce7a5525eba66087
|
|
| BLAKE2b-256 |
e018f1fb70fbc3fc4ac3200aa6336485312ef8e61e02ec9c618cd80ce7fa0302
|
Provenance
The following attestation bundles were made for couchbase_analytics-1.0.0.tar.gz:
Publisher:
publish.yml on couchbase/analytics-python-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
couchbase_analytics-1.0.0.tar.gz -
Subject digest:
31dafbf761371f82da9d1ad52fe3e33bcd85c6592513defc01fc0b55d4877723 - Sigstore transparency entry: 367396831
- Sigstore integration time:
-
Permalink:
couchbase/analytics-python-client@665ca23d390b14b63e7d9c4368338cc2ba81a7a0 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/couchbase
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@665ca23d390b14b63e7d9c4368338cc2ba81a7a0 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file couchbase_analytics-1.0.0-py3-none-any.whl.
File metadata
- Download URL: couchbase_analytics-1.0.0-py3-none-any.whl
- Upload date:
- Size: 126.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e57f63fe95d7ccba0caba07957d12c799d05e08fb62dbb5850b72dd2b519c51
|
|
| MD5 |
470599e325272cd31a48bee22cb660e8
|
|
| BLAKE2b-256 |
51ec22aadf226de1b007dfbe72d6f531cf07070c7dd1d6dbb854b91d0b0c1aef
|
Provenance
The following attestation bundles were made for couchbase_analytics-1.0.0-py3-none-any.whl:
Publisher:
publish.yml on couchbase/analytics-python-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
couchbase_analytics-1.0.0-py3-none-any.whl -
Subject digest:
8e57f63fe95d7ccba0caba07957d12c799d05e08fb62dbb5850b72dd2b519c51 - Sigstore transparency entry: 367396847
- Sigstore integration time:
-
Permalink:
couchbase/analytics-python-client@665ca23d390b14b63e7d9c4368338cc2ba81a7a0 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/couchbase
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@665ca23d390b14b63e7d9c4368338cc2ba81a7a0 -
Trigger Event:
workflow_dispatch
-
Statement type: