Metadata-Version: 2.1
Name: querysource
Version: 3.10.0
Summary: QuerySource is a Library for Querying Databases. QuerySource Query parser and generator.
Home-page: https://github.com/phenobarbital/querysource/
Author: Jesus Lara
Author-email: "Jesus Lara G." <jesuslarag@gmail.com>
License: BSD
Project-URL: Source, https://github.com/phenobarbital/querysource/
Project-URL: Funding, https://paypal.me/phenobarbital
Project-URL: Say Thanks!, https://saythanks.io/to/phenobarbital
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python
Classifier: Typing :: Typed
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: AsyncIO
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: BSD License
Requires-Python: >=3.9.16
Description-Content-Type: text/markdown
Requires-Dist: aiodns ==3.0.0
Requires-Dist: LivePopularTimes ==1.3
Requires-Dist: hubspot-api-client ==7.5.0
Requires-Dist: oauth2client ==4.1.3
Requires-Dist: google-analytics-data ==0.16.2
Requires-Dist: google-api-python-client ==2.86.0
Requires-Dist: google-auth-oauthlib ==1.0.0
Requires-Dist: sqloxide ==0.1.39
Requires-Dist: aiocsv ==1.2.4
Requires-Dist: lxml ==4.9.3
Requires-Dist: xlsxwriter ==3.1.2
Requires-Dist: odswriter ==0.4.0
Requires-Dist: odfpy ==1.4.1
Requires-Dist: xlrd ==2.0.1
Requires-Dist: pandas-bokeh ==0.5.5
Requires-Dist: plotly ==5.22.0
Requires-Dist: sweetviz ==2.1.4
Requires-Dist: pygal ==3.0.0
Requires-Dist: reportlab ==4.1.0
Requires-Dist: WeasyPrint ==58.1
Requires-Dist: APScheduler ==3.10.4
Requires-Dist: scikit-learn ==1.4.2
Requires-Dist: elasticsearch-async ==6.2.0
Requires-Dist: seaborn ==0.13.2
Requires-Dist: bs4 ==0.0.1
Requires-Dist: simple-salesforce ==1.12.3
Requires-Dist: psycopg2-binary ==2.9.9
Requires-Dist: sqlalchemy ==2.0.23
Requires-Dist: statsmodels ==0.14.2
Requires-Dist: pmdarima ==2.0.4
Requires-Dist: asyncdb[all] >=2.6.0
Requires-Dist: proxylists >=0.12.3
Requires-Dist: async-notify >=1.2.1
Requires-Dist: navconfig[default] >=1.7.0
Requires-Dist: nbformat ==5.10.4
Requires-Dist: nbconvert ==7.16.4
Requires-Dist: jsonschema ==4.22.0
Provides-Extra: jupyter
Requires-Dist: pylantern ==0.1.6 ; extra == 'jupyter'
Requires-Dist: jupyterlab-iframe ==0.5.0 ; extra == 'jupyter'
Requires-Dist: jupyter-fs ==0.4.1 ; extra == 'jupyter'
Requires-Dist: jupyter-server-proxy ==4.1.2 ; extra == 'jupyter'
Requires-Dist: jupyter-contrib-nbextensions ==0.7.0 ; extra == 'jupyter'
Requires-Dist: python-language-server ==0.36.2 ; extra == 'jupyter'
Requires-Dist: ipython ==8.24.0 ; extra == 'jupyter'
Requires-Dist: jupyter-bokeh ==4.0.4 ; extra == 'jupyter'
Requires-Dist: jupyter ==1.0.0 ; extra == 'jupyter'
Requires-Dist: notebook ==7.2.0 ; extra == 'jupyter'
Requires-Dist: nbconvert ==7.16.4 ; extra == 'jupyter'
Requires-Dist: jinja2-iso8601 ==1.0.0 ; extra == 'jupyter'
Requires-Dist: jinja2-time ==0.2.0 ; extra == 'jupyter'
Requires-Dist: jinja2-humanize-extension ==0.4.0 ; extra == 'jupyter'

# QuerySource #

QuerySource is a powerful Python library designed to streamline access to multiple databases and external APIs through a single, unified interface. Utilizing the proxy design pattern, QuerySource allows developers to seamlessly integrate various data sources into their projects without worrying about the complexities of managing multiple connections.

## Features ##

* Unified interface for querying multiple databases (Redis, PostgreSQL, MySQL, Oracle, SQL Server, InfluxDB, CouchDB, Druid)
* Support for external APIs (Salesforce, ShopperTrack, ZipCodeAPI, etc.)
* Easy-to-use API for executing queries
* Extensible design, allowing for easy addition of new data sources

## Installation

<div class="termy">

```console
$ pip install querysource
---> 100%
Successfully installed querysource
```


### Requirements ###

* Python >= 3.9
* asyncio (https://pypi.python.org/pypi/asyncio/)

## Basic Usage ##

QuerySource can be used in several ways, one is using QS object itself:

```python
from querysource.queries.qs import QS

query = QS(
    query='SELECT * FROM tests',
    output_format='pandas'
)
result, error = await query.query()
```

## Extending QuerySource ##

To add support for a new data source, create a new class inheriting from the BaseProvider or BaseAPI class and implement the required methods (prepare_connection, query, close). Then, register the new data source in the QuerySource class by adding it to the appropriate dictionary (_supported_databases or _supported_apis).


### Contributing ###

We welcome contributions to QuerySource! If you'd like to contribute, please follow these steps:

* Fork the repository
* Create a new branch for your feature or bugfix
* Implement your changes
* Add tests covering your changes
* Create a pull request against the original repository

### Contribution guidelines ###

* Writing tests
* Code review
* Other guidelines

### License ###

QuerySource is released under the BSD License. See the LICENSE file for more details.
