The Python client library is a Storage API client which you can use in your Python code. The current implementation supports all basic data manipulations:
The client source code is available in our Github repository.
This library is available on Github, so we
recommend that you use the pip package to install it:
pip3 install git+https://github.com/keboola/sapi-python-client.git
The client contains a Client class, which encapsulates all API endpoints and holds a storage token and URL. Each API endpoint is
represented by its own class (Files, Buckets, Jobs, etc.), which can be used standalone if you only work with one endpoint.
This means that the two following examples are equivalent:
from kbcstorage.client import Client
client = Client('https://connection.keboola.com', 'your-token')
client.tables.detail('in.c-demo.some-table')from kbcstorage.tables import Tables
tables = Tables('https://connection.keboola.com', 'your-token')
tables.detail('in.c-demo.some-table')To create a new table in Storage, use the create function of the Tables class. Provide the name of an existing bucket,
the name of the new table and a CSV file with the table’s contents.
To create the new-table table in the in.c-main bucket, use:
from kbcstorage.client import Client
client = Client('https://connection.keboola.com', 'your-token')
client.tables.create(name='new-table',
bucket_id='in.c-main',
file_path='coords.csv',
primary_key=['id'])The above command will import the contents of the coords.csv file into the newly created table. It will
also mark the id column as the primary key.
To load data incrementally into an existing table, we can use the load method, where table_id is the ID of the table that you want to load into, and path is the path to your csv file containing the data:
from kbcstorage.client import Client
client = Client('https://connection.keboola.com', 'your-token')
client.tables.load(table_id=table_id, file_path=path, is_incremental=True)To export data from the old-table table in the in.c-main bucket, use:
from kbcstorage.client import Client
import csv
client = Client('https://connection.keboola.com', 'your-token')
client.tables.export_to_file(table_id='in.c-main.new-table', path_name='.')
with open('./new-table', mode='rt', encoding='utf-8') as in_file:
lazy_lines = (line.replace('\0', '') for line in in_file)
reader = csv.reader(lazy_lines, lineterminator='\n')
for row in reader:
print(row)The above command will export the table from Storage into the file new-table and read it using
CSV Reader.
# create a client
client = Client('https://connection.keboola.com', 'your-token')
# create a bucket
client.buckets.create(name='demo', stage='in')
# list buckets
client.buckets.list()
# list all tables
client.tables.list()
# list all tables in a bucket
client.buckets.list_tables(bucket_id='in.c-demo')
# delete a table
client.tables.delete(table_id='in.c-demo.some-table')
# delete a bucket
client.buckets.delete(bucket_id='in.c-main', force=True)