This package provides a client interface to query Presto a distributed SQL engine. It supports Python 2.7, 3.5, 3.6, and pypy.
$ pip install presto-python-client
Use the DBAPI interface to query Presto:
import prestodb conn=prestodb.dbapi.connect( host='localhost', port=8080, user='the-user', catalog='the-catalog', schema='the-schema', ) cur = conn.cursor() cur.execute('SELECT * FROM system.runtime.nodes') rows = cur.fetchall()
This will query the
system.runtime.nodes system tables that shows the nodes
in the Presto cluster.
The DBAPI implementation in
prestodb.dbapi provides methods to retrieve fewer
rows for example
Cursor.fetchmany(). By default
Cursor.fetchmany() fetches one row. Please set
The client runs by default in autocommit mode. To enable transactions, set
isolation_level to a value different than
import prestodb with prestodb.dbapi.connect( host='localhost', port=8080, user='the-user', catalog='the-catalog', schema='the-schema', isolation_level=transaction.IsolationLevel.REPEATABLE_READ, ) as conn: cur = conn.cursor() cur.execute('INSERT INTO sometable VALUES (1, 2, 3)') cur.execute('INSERT INTO sometable VALUES (4, 5, 6)')
The transaction is created when the first SQL statement is executed.
prestodb.dbapi.Connection.commit() will be automatically called when the code
exits the with context and the queries succeed, otherwise
`prestodb.dbapi.Connection.rollback()' will be called.
There is a helper scripts,
run, that provides commands to run tests.
./run tests to run both unit and integration tests.
presto-python-client uses pytest for its tests. To run
only unit tests, type:
$ pytest tests
Then you can pass options like
--pdb or anything supported by
To run the tests with different versions of Python in managed virtualenvs,
tox (see the configuration in
To run integration tests:
$ pytest integration_tests
They build a
Docker image and then run a container with a Presto server:
- the image is named
- the container is named
The container is expected to be removed after the tests are finished.
Please refer to the
Dockerfile for details. You will find the configuration
You can use
./run to manipulate the containers:
./run presto_server: build and run Presto in a container
./run presto_cli CONTAINER_ID: connect the Java Presto CLI to a container
./run list: list the running containers
./run clean: kill the containers
Start by forking the repository and then modify the code in your fork.
Please refer to
CONTRIBUTING.md before submitting your contributions.
Clone the repository and go inside the code directory. Then you can get the
python setup.py --version.
We recommend that you use
virtualenv to develop on
$ virtualenv /path/to/env $ /path/to/env/bin/active $ pip install -r requirements.txt
For development purpose, pip can reference the code you are modifying in a virtualenv:
$ pip install -e .[tests]
That way, you do not need to run
pip install again to make your changes
applied to the virtualenv.
When the code is ready, submit a Pull Request.
Feel free to create an issue as it make your request visible to other users and contributors.
If an interactive discussion would be better or if you just want to hangout and chat about the Presto Python client, you can join us on the #presto-python-client channel on Slack.