Metadata-Version: 2.1
Name: querysource
Version: 3.6.33
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
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: asyncio (==3.4.3)
Requires-Dist: uvloop (==0.17.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.30)
Requires-Dist: aiocsv (==1.2.3)
Requires-Dist: xlsxwriter (==3.0.9)
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.13.1)
Requires-Dist: sweetviz (==2.1.4)
Requires-Dist: pygal (==3.0.0)
Requires-Dist: reportlab (==3.6.12)
Requires-Dist: WeasyPrint (==58.1)
Requires-Dist: APScheduler (==3.10.1)
Requires-Dist: proxylists (>=0.10.2)
Requires-Dist: async-notify (>=0.8.0)
Requires-Dist: navconfig[default] (>=1.1.0)
Requires-Dist: asyncdb[all] (>=2.2.0)
Requires-Dist: navigator-session (>=0.3.3)
Requires-Dist: scikit-learn (==1.2.2)
Requires-Dist: elasticsearch-async (==6.2.0)
Requires-Dist: seaborn (==0.12.2)
Requires-Dist: simple-salesforce (==1.12.3)

# 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.
