Metadata-Version: 2.1
Name: questdb-connect
Version: 0.0.54
Summary: SqlAlchemy/Superset libraries.
Author-email: "questdb.io" <miguel@questdb.io>
Project-URL: Homepage, https://github.com/questdb/questdb-connect/
Project-URL: Bug Tracker, https://github.com/questdb/questdb-connect/issues/
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: test
Requires-Dist: psycopg2-binary (~=2.9.6) ; extra == 'test'
Requires-Dist: SQLAlchemy (<=1.4.47) ; extra == 'test'
Requires-Dist: apache-superset (>=2.1.0) ; extra == 'test'
Requires-Dist: sqlparse (==0.4.3) ; extra == 'test'
Requires-Dist: ruff (~=0.0.261) ; extra == 'test'
Requires-Dist: pytest (~=7.3.0) ; extra == 'test'

## QuestDB Connect

This module offers an implementation of QuestDB's dialect for [SQLAlchemy](https://www.sqlalchemy.org/), 
as well as an engine specification for [Apache Superset](https://github.com/apache/superset/), using 
[psycopg2](https://www.psycopg.org/) for database connectivity.

Psycopg2 is a widely used and trusted Python module for connecting to and working with PostgreSQL databases. 
It provides a comprehensive set of features for interacting with the PostgreSQL database system.

SQLAlchemy is an open-source SQL toolkit and ORM library for Python. It provides a high-level API for 
communicating with relational databases, including schema creation and modification, an SQL expression 
language, and database connection management. 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 a popular 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.8.x to 3.10.x
* Psycopg2
* SQLAlchemy

## Installation

You can install this package using pip:

```shell
pip install questdb-connect
```

## Sample Usage

Use the QuestDB dialect by specifying it in your SQLAlchemy connection string, 
from that point on use SQLAlchemy:

```python
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()
```

## 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](DEVELOPERS.md)
if you would like to push a PR.
