Skip to main content

Looker SDK

The Looker SDK for Python provides a convenient way to communicate with the Looker API available on your Looker server. The library requires python3.6+ and is annotated using the typing module.

The SDK uses a plug-in architecture (also known as dependency injection) for initializing that supports run-time specific transports (currently only RequestsTransport) and different approaches for managing API authentication (AuthSession and OAuthSession). The methods and models are generated from the Looker API spec by a new code generator developed at Looker.

Please report any issues encountered, and indicate the SDK language in the report.

Basic Usage

import looker_sdk

# For this to work you must either have set environment variables or created a looker.ini as described below in "Configuring the SDK"
sdk = looker_sdk.init40()  # or init31() for the older v3.1 API
my_user = sdk.me()

# output can be treated like a dictionary
print(my_user["first_name"])
# or a model instance (User in this case)
print(my_user.first_name)

# input methods can take either model instances like WriteUser
sdk.create_user(
    body=looker_sdk.models.WriteUser(first_name="Jane", last_name="Doe")
)
# or plain dictionaries
sdk.create_user(body={"first_name": "Jane", "last_name": "Doe"})

Full tutorial

Go from installation all the way to creating a functional micro-application in this 20-30 minute interactive tutorial.

This tutorial is hosted in Google Colaboratory, an interactive online notebook. You can follow along right in the notebook by clicking the button below.

https://colab.research.google.com/assets/colab-badge.svg

Sample project setup

Install python 3.8. We highly recommend using pyenv to install different versions of python. Mac users should use homebrew to install pyenv:

brew install pyenv

Linux users should use

curl https://pyenv.run | bash

Put this in your shell configuration script:

export PATH=$PATH:$HOME/.pyenv/bin
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

Follow the remaining steps 3 - 5 of https://github.com/pyenv/pyenv#basic-github-checkout otherwise your python3.8 installation may break.

Now you’re ready to install python 3.8:

pyenv install 3.8.2

We’ll use pipenv (fantastic virtualenv manager) to manage project dependencies.

brew install pipenv

Create a project directory

mkdir looker-sdk-example

Set python3.8 as the base interpreter for this directory

cd looker-sdk-example/
pyenv local 3.8.2

Install looker_sdk using pipenv

pipenv --python 3.8.2 install --pre looker_sdk

Configuring the SDK

The SDK supports configuration through

  1. an .ini file on disk

  2. setting environment variables

  3. providing your own implementation of the ApiSettings class

. The latter override the former.

Note: The .ini configuration for the Looker SDK is a sample implementation intended to speed up the initial development of python applications using the Looker API. See this note on Securing your SDK Credentials for warnings about using .ini files that contain your API credentials in a source code repository or production environment.

In order to configure the SDK client, create a “looker.ini” file to reference during client.setup()

example file:

[Looker]
# Base URL for API. Do not include /api/* in the url. If hosted on GCP, remove the :19999 leaving just https://your.cloud.looker.com
base_url=https://your.looker.com:19999
# API 3 client id
client_id=YourClientID
# API 3 client secret
client_secret=YourClientSecret
# Set to false if testing locally against self-signed certs. Otherwise leave True
verify_ssl=True

Note: If the application using the Looker SDK is going to be committed to a version control system, be sure to ignore the looker.ini file so the API credentials aren’t unintentionally published.

For any .ini setting you can use an environment variable instead. It takes the form of LOOKERSDK_<UPPERCASE-SETTING-FROM-INI> e.g. LOOKERSDK_CLIENT_SECRET

A final option is to provide your own implementation of the ApiSettings class. It is easiest to subclass api_settings.ApiSettings and override the read_config function (don’t forget a call to super().read_config() if appropriate, Example below). However, at a minimum your class must implement the api_settings.PApiSettings protocol.

import os
import looker_sdk
from looker_sdk import api_settings

class MyApiSettings(api_settings.ApiSettings):
    def __init__(self, *args, **kw_args):
        self.my_var = kw_args.pop("my_var")
        super().__init__(*args, **kw_args)

    def read_config(self) -> api_settings.SettingsConfig:
        config = super().read_config()
        # See api_settings.SettingsConfig for required fields
        if self.my_var == "foo":
            config["client_id"] = os.getenv("FOO_CLIENT")
            config["client_secret"] = os.getenv("FOO_SECRET")
        else:
            config["client_id"] = os.getenv("BAR_CLIENT")
            config["client_secret"] = os.getenv("BAR_SECRET")
        return config

sdk = looker_sdk.init40(config_settings=MyApiSettings(my_var="foo"))
...

Code example

See many python sdk examples in our examples repo

Changelog

Located in our github repo

Release files for looker-sdk 26.12.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for looker-sdk 26.12.0
File Size Uploaded
looker_sdk-26.12.0.tar.gz 240.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for looker-sdk 26.12.0
File Interpreter ABI Platform
looker_sdk-26.12.0-py3-none-any.whl Python 3 none any Details

Total release size: 503.5 kB

Release files / looker_sdk-26.12.0.tar.gz

Download URL looker_sdk-26.12.0.tar.gz
Size 240.9 kB
Tags Source
SHA-256 checksum
How to use checksums
4dd327927b541e322de8bee1820cf1ce212c1883dc51b8bc098efe12c314e3f5
BLAKE2b-256 checksum
How to use checksums
7cb22e2aba48b687a0237bf1d84d0e3ea99c433232b5ae662369ec8439793987
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.20

Release files / looker_sdk-26.12.0-py3-none-any.whl

Download URL looker_sdk-26.12.0-py3-none-any.whl
Size 262.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c765f95c01ceaf3c162a779c4794dfaeb8696b4e1e16a81fb8bb1f253ce74b57
BLAKE2b-256 checksum
How to use checksums
eaa494b4c13e8ddc705b0607287f4e778a1cb54aab00d330350dd85dab3310a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.20

Release history Release notifications | RSS feed

This release

26.12.0 This release

2 release files

26.8.0

2 release files

26.6.1

2 release files

26.6.0

2 release files

26.4.0

2 release files

26.2.0

2 release files

25.8.0

2 release files

25.4.0

2 release files

25.0.0

2 release files

24.2.1

2 release files

24.2.0

2 release files

23.8.1

2 release files

23.8.0

2 release files

23.6.0

2 release files

23.0.0

2 release files

22.8.0

2 release files

22.6.0

2 release files

22.4.0

2 release files

22.2.0

2 release files

22.0.0

2 release files

21.8.0

2 release files

21.6.1

2 release files

21.4.1

2 release files

21.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page