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
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
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e57616f55c916d56476b4100e88cd88ab7d3c5f5e4ef50d2200debde23e6e34 |
|
MD5 | edee62bd91d8773d0e451ebc063d336d |
|
BLAKE2b-256 | 0f80389f48a3b64a7910f0875d992a5a83dbfa0b8a63c385658e095ffcfc18da |
File details
Details for the file questdb_ilp_client-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: questdb_ilp_client-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.9.9 Darwin/19.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5172d3b5fd71ef60ff629ee6e7fd4be3c417732a0e9c20b52f84fef9fa34c603 |
|
MD5 | db6f935a22d526f04ffe8cb8e2a58fb3 |
|
BLAKE2b-256 | 31b527c5e067e1c6b182b0700aee765c4fc0751b1991f9cff5e41af0edb54b22 |