SqlAlchemy library
Project description
QuestDB Connect
This repository contains the official implementation of QuestDB's dialect for SQLAlchemy, as well as an engine specification for Apache Superset, using psycopg2 for database connectivity.
The Python module is available here:
https://pypi.org/project/questdb-connect/Psycopg2 is a widely used and trusted Python module for connecting to, and working with, QuestDB and other PostgreSQL databases.
SQLAlchemy is a SQL toolkit and ORM library for Python. It provides a high-level API for communicating with relational databases, including schema creation and modification. The ORM layer abstracts away the complexities of the database, allowing developers to work with Python objects instead of raw SQL statements.
Apache Superset is an open-source business intelligence web application that enables users to visualize and explore data through customizable dashboards and reports. It provides a rich set of data visualizations, including charts, tables, and maps.
Requirements
- Python from 3.9 to 3.11 (superset itself use version 3.9.x)
- Psycopg2
('psycopg2-binary~=2.9.6')
- SQLAlchemy
('SQLAlchemy<=1.4.47')
You need to install these packages because questdb-connect depends on them.
Versions 0.0.X
These are versions released for testing purposes.
Installation
You can install this package using pip:
pip install questdb-connect
SQLALchemy Sample Usage
Use the QuestDB dialect by specifying it in your SQLAlchemy connection string:
questdb://admin:quest@localhost:8812/main
questdb://admin:quest@host.docker.internal:8812/main
From that point on use standard SQLAlchemy:
import datetime
import os
os.environ.setdefault('SQLALCHEMY_SILENCE_UBER_WARNING', '1')
import questdb_connect.dialect as qdbc
from sqlalchemy import Column, MetaData, create_engine, insert
from sqlalchemy.orm import declarative_base
Base = declarative_base(metadata=MetaData())
class Signal(Base):
__tablename__ = 'signal'
__table_args__ = (qdbc.QDBTableEngine('signal', 'ts', qdbc.PartitionBy.HOUR, is_wal=True),)
source = Column(qdbc.Symbol)
value = Column(qdbc.Double)
ts = Column(qdbc.Timestamp, primary_key=True)
def main():
engine = create_engine('questdb://localhost:8812/main')
try:
Base.metadata.create_all(engine)
with engine.connect() as conn:
conn.execute(insert(Signal).values(
source='coconut',
value=16.88993244,
ts=datetime.datetime.utcnow()
))
finally:
if engine:
engine.dispose()
if __name__ == '__main__':
main()
Superset Installation
Follow the instructions available here.
Contributing
This package is open-source, contributions are welcome. If you find a bug or would like to request a feature, please open an issue on the GitHub repository. Have a look at the instructions for developers if you would like to push a PR.
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_connect-0.0.107.tar.gz
.
File metadata
- Download URL: questdb_connect-0.0.107.tar.gz
- Upload date:
- Size: 26.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 341de127ab2c92e0258a552d2d42409bf544ad499fd0ef9ec154a36bef7d6908 |
|
MD5 | 0fbe3d6ad7bb3b70a0aa76dfb84a825c |
|
BLAKE2b-256 | 1f76a4dff577ef99cbd58b684ec67add4469df4b779c5744f7c325a6e3234e98 |
File details
Details for the file questdb_connect-0.0.107-py3-none-any.whl
.
File metadata
- Download URL: questdb_connect-0.0.107-py3-none-any.whl
- Upload date:
- Size: 26.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 497258fc5d8cbd00bdbfd4caf25c68c34a59a2ca3c247ab3e95130fd6d4bda1a |
|
MD5 | 6a956597bcad98b9056e43e86d152b36 |
|
BLAKE2b-256 | 40b22c82861e968dc50e2a19c6827a9e4d6753159a19f235de7b5ed5c41cf590 |