Skip to main content

garlic 🧄

cli and python interface for interacting with Snowflake

Features

  • run queries against snowflake using simple UX
  • auto-convert query results to polars dataframes
  • convenience functions for:
    • formatting timestamps for use in SQL queries
    • setting the context (warehouse, database, schema, role)
    • listing catalog of databases, schemas, tables, and query history
    • creating tables from select queries

Installation

uv add paradigm_garlic

Credentials

To use garlic without giving your credentials each time, add your credentials the SNOWFLAKE_CREDENTIALS environment variable

export SNOWFLAKE_CREDENTIALS='<JSON_CREDENTIALS>'

Where <JSON_CREDENTIALS> is a JSON-encoded map of credentials

For example, if using a programmatic access key:

{
    "account": "abc12345.xy12345",
    "user": "my_username",
    "authenticator": "PROGRAMMATIC_ACCESS_KEY",
    "token": "<YOUR_PROGRAMMATIC_ACCESS_TOKEN>"
}

Alternatively, can set the credentials env var in a live python session:

os.environ['SNOWFLAKE_CREDENTIALS'] = json.dumps(credentials_dict)

Or specify the credentials in each function call:

import garlic

results = garlic.query('SELECT * FROM my_table', credentials=credentials_dict)

Example Usage

Simplest example

import garlic

dataframe = garlic.query('SELECT * FROM my_table')

Set different default warehouse:

import garlic

garlic.use_warehouse('BIG_WAREHOUSE')
dataframe = garlic.query('SELECT * FROM my_table')

Read from Snowflake management tables

import garlic

databases = garlic.list_databases()
schemas = garlic.list_schemas()
tables = garlic.list_tables()
query_history = garlic.list_query_history()

Use timestamps in CLI queries

import garlic
import datetime

sql = """
SELECT *
FROM my_table
WHERE
    block_timestamp >= {start_time}
    AND block_timestamp < {end_time}
""".format(
    start_time=garlic.format_timestamp('2024-01-01'),
    end_time=garlic.format_timestamp(datetime.datetime.now()),
)

dataframe = garlic.query(sql)

Set environment context

garlic.use_warehouse('BIG_WH')
garlic.use_schema('MY_SCHEMA')
garlic.use_database('MY_DB')
garlic.use_role('MY_ROLE')

dataframe = garlic.query('SELECT * FROM my_table')

Create table from select query

import garlic

garlic.create_table(
    target_table='new_table_name',
    select_sql='SELECT * FROM my_table WHERE some_column = some_value',
)

Metadata

Release files for paradigm_garlic 0.2.6

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

Source distribution (sdist)

Source distribution for paradigm_garlic 0.2.6
File Size Uploaded
paradigm_garlic-0.2.6.tar.gz 9.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for paradigm_garlic 0.2.6
File Interpreter ABI Platform
paradigm_garlic-0.2.6-py3-none-any.whl Python 3 none any Details

Total release size: 19.3 kB

Release files / paradigm_garlic-0.2.6.tar.gz

Download URL paradigm_garlic-0.2.6.tar.gz
Size 9.3 kB
Tags Source
SHA-256 checksum
How to use checksums
1c288723fdfffdb76edb8835ccd9b62bb4d96efe748e88f320bd7a154d570616
BLAKE2b-256 checksum
How to use checksums
9ef46545cd006a930ba8c9d72fdfa855a269785578d346f65f63d8d2bb5472dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.0

Release files / paradigm_garlic-0.2.6-py3-none-any.whl

Download URL paradigm_garlic-0.2.6-py3-none-any.whl
Size 10.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
75374f0919a6137bba777401533ddb6a22c63dafd5d778367f991500100bf0d6
BLAKE2b-256 checksum
How to use checksums
185be97f36a69410a7274121e82b6d4f78fe9840acef94e20deab0ac50366603
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.0

Release history Release notifications | RSS feed

This release

0.2.6 This release

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

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