Skip to main content

A Python3 API for ingesting data into QuestDB through the InfluxDB Line Protocol.

Project description

Python QuestDB ILP TCP client

Requirements

This repository contains a Python 3.9 API for ingesting data into QuestDB through the InfluxDB Line Protocol.

We use make as a CLI to various convenient work developer flows.

Install Flow

We require Python 3.9.*, or above installed in your system, and pip needs to be up-to-date:

$ python3 --version
$ Python 3.9.<some-integer>
$ pip3 install --upgrade pip

Now we can install the project's dependencies in a virtual environment and activate it:

$ make install-dependencies

Or for development (Required for code quality and test flows):

$ make install-dependencies-dev

To activate the environment:

$ poetry shell
$ echo $SHLVL
2

To deactivate the environment:

$ exit
$ echo $SHLVL
1

Code Quality Flow (Requires dev dependencies)

For convenience, we can let standard tools apply standard code formatting; the second command will report issues that need to be addressed before using the client in production environments.

$ make format-code
$ make check-code-quality

Test Flow (Requires dev dependencies)

To run all tests in the tests module:

$ make test

Start/stop QuestDB Docker container Flow

To start QuestDB:

$ make compose-up

This creates a folder questdb_root to store QuestDB's table data/metadata, server configuration files, and the web UI.

The Web UI is avaliable at: localhost:9000.

Logs can be followed on the terminal:

$ docker logs -f questdb

To stop QuestDB:

$ make compose-down

Data is available, even when QuestDB is down, in folder questdb_root.

Basic usage

with LineTcpSender(HOST, PORT, SIZE) as ls:
    ls.table("metric_name")
    ls.symbol("Symbol", "value")
    ls.column_int("number", 10)
    ls.column_float("double", 12.23)
    ls.column_str("string", "born to shine")
    ls.at_utc_datetime(datetime(2021, 11, 25, 0, 46, 26))
    ls.flush()

As an object

ls = LineTcpSender(HOST, PORT, SIZE)
ls.table("metric_name")
ls.symbol("Symbol", "value")
ls.column_int("number", 10)
ls.column_float("double", 12.23)
ls.column_str("string", "born to shine")
ls.at_utc_datetime(datetime(2021, 11, 25, 0, 46, 26))
ls.flush()

Multi-line send

with LineTcpSender(HOST, PORT, SIZE) as ls:
    for i in range(int(1e6)):
        ls.table("metric_name")
        ls.column_int("counter", i)
        ls.at_now()
    ls.flush()

Object multi-line send

ls = LineTcpSender(HOST, PORT, SIZE)
for i in range(int(1e6)):
    ls.table("metric_name")
    ls.column_int("counter", i)
    ls.at_now()
ls.flush()

Notes

  • On file setup.py: It is deprecated. To publish a package on PyPi you can follow this.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

questdb_ilp_client-0.1.0.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

questdb_ilp_client-0.1.0-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file questdb_ilp_client-0.1.0.tar.gz.

File metadata

  • Download URL: questdb_ilp_client-0.1.0.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.9.9 Darwin/19.6.0

File hashes

Hashes for questdb_ilp_client-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9e57616f55c916d56476b4100e88cd88ab7d3c5f5e4ef50d2200debde23e6e34
MD5 edee62bd91d8773d0e451ebc063d336d
BLAKE2b-256 0f80389f48a3b64a7910f0875d992a5a83dbfa0b8a63c385658e095ffcfc18da

See more details on using hashes here.

File details

Details for the file questdb_ilp_client-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for questdb_ilp_client-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5172d3b5fd71ef60ff629ee6e7fd4be3c417732a0e9c20b52f84fef9fa34c603
MD5 db6f935a22d526f04ffe8cb8e2a58fb3
BLAKE2b-256 31b527c5e067e1c6b182b0700aee765c4fc0751b1991f9cff5e41af0edb54b22

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page