<h1 align="center">Pyexasol</h1>
<p align="center">
<a href="https://github.com/exasol/pyexasol/actions/workflows/ci-master.yml">
<img src="https://github.com/exasol/pyexasol/actions/workflows/ci-master.yml/badge.svg" alt="Continuous Integration (master)">
</a>
<a href="https://anaconda.org/conda-forge/pyexasol">
<img src="https://anaconda.org/conda-forge/pyexasol/badges/version.svg" alt="Anaconda">
</a>
<a href="https://pypi.org/project/pyexasol/">
<img src="https://img.shields.io/pypi/v/pyexasol" alt="PyPi Package">
</a>
<a href="https://pypi.org/project/pyexasol/">
<img src="https://img.shields.io/pypi/dm/pyexasol" alt="Downloads">
</a>
<a href="https://pypi.org/project/pyexasol/">
<img src="https://img.shields.io/pypi/pyversions/pyexasol" alt="Supported Python Versions">
</a>
</p>
PyEXASOL is the officially supported Python connector for [Exasol](https://www.exasol.com). It helps to handle massive volumes of data commonly associated with this DBMS.
You may expect significant performance improvement over ODBC in a single process scenario involving pandas.
PyEXASOL provides API to read & write multiple data streams in parallel using separate processes, which is necessary to fully utilize hardware and achieve linear scalability. With PyEXASOL you are no longer limited to a single CPU core.
## Quick links
- [Getting started](#getting-started)
- [Reference](/docs/REFERENCE.md)
- [Examples](/docs/EXAMPLES.md)
- [Best practices](/docs/BEST_PRACTICES.md)
- [Local config (.ini file)](/docs/LOCAL_CONFIG.md)
- [SQL formatting](/docs/SQL_FORMATTING.md)
- [HTTP Transport](/docs/HTTP_TRANSPORT.md)
- [HTTP Transport (multiprocessing)](/docs/HTTP_TRANSPORT_PARALLEL.md)
- [Parallelism](/docs/PARALLELISM.md)
- [SSL encryption](/docs/ENCRYPTION.md)
- [WebSocket protocol versions](/docs/PROTOCOL_VERSION.md)
- [Performance tests](/docs/PERFORMANCE.md)
- [UDF scripts output](/docs/SCRIPT_OUTPUT.md)
- [DB-API 2.0 compatibility](/docs/DBAPI_COMPAT.md)
- [Optional dependencies](/docs/DEPENDENCIES.md)
- [Changelog](/CHANGELOG.md)
- [Developer Guide](/docs/DEVELOPER_GUIDE.md)
## PyEXASOL main concepts
- Based on [WebSocket protocol](https://github.com/exasol/websocket-api);
- Optimized for minimum overhead;
- Easy integration with pandas via HTTP transport;
- Compression to reduce network bottleneck;
## System requirements
- Exasol >= 7.1
- Python >= 3.9
## Getting started
Install PyEXASOL:
```
pip install pyexasol[pandas]
```
Run basic query:
```python
import pyexasol
C = pyexasol.connect(dsn='<host:port>', user='sys', password='exasol')
stmt = C.execute("SELECT * FROM EXA_ALL_USERS")
for row in stmt:
print(row)
```
Load data into `pandas.DataFrame`:
```python
import pyexasol
C = pyexasol.connect(dsn='<host:port>', user='sys', password='exasol', compression=True)
df = C.export_to_pandas("SELECT * FROM EXA_ALL_USERS")
print(df.head())
```
You may set up [local config](/docs/LOCAL_CONFIG.md) to store your personal Exasol credentials and connection options:
```python
import pyexasol
C = pyexasol.connect_local_config('my_config')
stmt = C.execute("SELECT CURRENT_TIMESTAMP")
print(stmt.fetchone())
```
Connect to Exasol SAAS using OpenID token for authentication:
```python
import pyexasol
C = pyexasol.connect(dsn='<host:port>', user='sys', refresh_token='<token>')
stmt = C.execute("SELECT * FROM EXA_ALL_USERS")
for row in stmt:
print(row)
```
## Created by
[Vitaly Markov](https://www.linkedin.com/in/markov-vitaly/), 2018 — 2022
Enjoy!
## Maintained by
[Exasol](https://www.exasol.com) 2023 — Today
Raw data
{
"_id": null,
"home_page": null,
"name": "pyexasol",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": "exasol, sql, database, performance, websocket, import, export",
"author": "Vitaly Markov",
"author_email": "wild.desu@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/98/e6/bcfab874cc0468996d98b10d17200ad8f4064819b8090f1ef084d61c994c/pyexasol-0.27.0.tar.gz",
"platform": null,
"description": "<h1 align=\"center\">Pyexasol</h1>\n<p align=\"center\">\n<a href=\"https://github.com/exasol/pyexasol/actions/workflows/ci-master.yml\">\n <img src=\"https://github.com/exasol/pyexasol/actions/workflows/ci-master.yml/badge.svg\" alt=\"Continuous Integration (master)\">\n</a>\n<a href=\"https://anaconda.org/conda-forge/pyexasol\">\n <img src=\"https://anaconda.org/conda-forge/pyexasol/badges/version.svg\" alt=\"Anaconda\">\n</a>\n<a href=\"https://pypi.org/project/pyexasol/\">\n <img src=\"https://img.shields.io/pypi/v/pyexasol\" alt=\"PyPi Package\">\n</a>\n<a href=\"https://pypi.org/project/pyexasol/\">\n <img src=\"https://img.shields.io/pypi/dm/pyexasol\" alt=\"Downloads\">\n</a>\n<a href=\"https://pypi.org/project/pyexasol/\">\n <img src=\"https://img.shields.io/pypi/pyversions/pyexasol\" alt=\"Supported Python Versions\">\n</a>\n</p>\n\nPyEXASOL is the officially supported Python connector for [Exasol](https://www.exasol.com). It helps to handle massive volumes of data commonly associated with this DBMS.\n\nYou may expect significant performance improvement over ODBC in a single process scenario involving pandas.\n\nPyEXASOL provides API to read & write multiple data streams in parallel using separate processes, which is necessary to fully utilize hardware and achieve linear scalability. With PyEXASOL you are no longer limited to a single CPU core.\n\n\n## Quick links\n- [Getting started](#getting-started)\n- [Reference](/docs/REFERENCE.md)\n- [Examples](/docs/EXAMPLES.md)\n- [Best practices](/docs/BEST_PRACTICES.md)\n- [Local config (.ini file)](/docs/LOCAL_CONFIG.md)\n- [SQL formatting](/docs/SQL_FORMATTING.md)\n- [HTTP Transport](/docs/HTTP_TRANSPORT.md)\n- [HTTP Transport (multiprocessing)](/docs/HTTP_TRANSPORT_PARALLEL.md)\n- [Parallelism](/docs/PARALLELISM.md)\n- [SSL encryption](/docs/ENCRYPTION.md)\n- [WebSocket protocol versions](/docs/PROTOCOL_VERSION.md)\n- [Performance tests](/docs/PERFORMANCE.md)\n- [UDF scripts output](/docs/SCRIPT_OUTPUT.md)\n- [DB-API 2.0 compatibility](/docs/DBAPI_COMPAT.md)\n- [Optional dependencies](/docs/DEPENDENCIES.md)\n- [Changelog](/CHANGELOG.md)\n- [Developer Guide](/docs/DEVELOPER_GUIDE.md)\n\n\n## PyEXASOL main concepts\n\n- Based on [WebSocket protocol](https://github.com/exasol/websocket-api);\n- Optimized for minimum overhead;\n- Easy integration with pandas via HTTP transport;\n- Compression to reduce network bottleneck;\n\n\n## System requirements\n\n- Exasol >= 7.1\n- Python >= 3.9\n\n\n## Getting started\n\nInstall PyEXASOL:\n```\npip install pyexasol[pandas]\n```\n\nRun basic query:\n```python\nimport pyexasol\n\nC = pyexasol.connect(dsn='<host:port>', user='sys', password='exasol')\n\nstmt = C.execute(\"SELECT * FROM EXA_ALL_USERS\")\n\nfor row in stmt:\n print(row)\n```\n\nLoad data into `pandas.DataFrame`:\n```python\nimport pyexasol\n\nC = pyexasol.connect(dsn='<host:port>', user='sys', password='exasol', compression=True)\n\ndf = C.export_to_pandas(\"SELECT * FROM EXA_ALL_USERS\")\nprint(df.head())\n```\n\nYou may set up [local config](/docs/LOCAL_CONFIG.md) to store your personal Exasol credentials and connection options:\n```python\nimport pyexasol\n\nC = pyexasol.connect_local_config('my_config')\n\nstmt = C.execute(\"SELECT CURRENT_TIMESTAMP\")\nprint(stmt.fetchone())\n```\n\nConnect to Exasol SAAS using OpenID token for authentication:\n\n```python\nimport pyexasol\n\nC = pyexasol.connect(dsn='<host:port>', user='sys', refresh_token='<token>')\n\nstmt = C.execute(\"SELECT * FROM EXA_ALL_USERS\")\n\nfor row in stmt:\n print(row)\n```\n\n## Created by\n[Vitaly Markov](https://www.linkedin.com/in/markov-vitaly/), 2018 \u2014 2022\n\nEnjoy!\n\n## Maintained by\n[Exasol](https://www.exasol.com) 2023 \u2014 Today \n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Exasol python driver with extra features",
"version": "0.27.0",
"project_urls": {
"Changelog": "https://github.com/exasol/pyexasol/blob/master/CHANGELOG.md",
"Documentation": "https://github.com/exasol/pyexasol/",
"Homepage": "https://www.exasol.com/",
"Issues": "https://github.com/exasol/pyexasol/issues",
"Source": "https://github.com/exasol/pyexasol"
},
"split_keywords": [
"exasol",
" sql",
" database",
" performance",
" websocket",
" import",
" export"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "5b601a7b5e671ee4e448e8954bfd97db9721226a7c4f043390bdff43c3c44677",
"md5": "91a157b75e54e502e6674e6337acc568",
"sha256": "041e1db1ae8f26fa24876056ce8da5830e346fc47734847a95cc960ac056d0c6"
},
"downloads": -1,
"filename": "pyexasol-0.27.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "91a157b75e54e502e6674e6337acc568",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 57052,
"upload_time": "2024-09-09T12:20:50",
"upload_time_iso_8601": "2024-09-09T12:20:50.322988Z",
"url": "https://files.pythonhosted.org/packages/5b/60/1a7b5e671ee4e448e8954bfd97db9721226a7c4f043390bdff43c3c44677/pyexasol-0.27.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "98e6bcfab874cc0468996d98b10d17200ad8f4064819b8090f1ef084d61c994c",
"md5": "cbddc6a12588aa58ec6d40e244357dce",
"sha256": "795490cd810617bf927e0e90b88347facb5e66f58e0e16378fef5d22fadacd60"
},
"downloads": -1,
"filename": "pyexasol-0.27.0.tar.gz",
"has_sig": false,
"md5_digest": "cbddc6a12588aa58ec6d40e244357dce",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 48954,
"upload_time": "2024-09-09T12:20:52",
"upload_time_iso_8601": "2024-09-09T12:20:52.441428Z",
"url": "https://files.pythonhosted.org/packages/98/e6/bcfab874cc0468996d98b10d17200ad8f4064819b8090f1ef084d61c994c/pyexasol-0.27.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-09 12:20:52",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "exasol",
"github_project": "pyexasol",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pyexasol"
}