A SQLAlchemy dialect for Teradata
Switch branches/tags
Nothing to show
Clone or download
Latest commit 24ab0ec Jul 13, 2018


Dialect for SQLAlchemy

SQLAlchemy is a database toolkit that provides an abstraction over databases. It allows you to interact with relational databases using an object relational mapper or through a pythonic sql rendering engine known as the core.

Read the documentation and more: http://www.sqlalchemy.org/

The Teradata Dialect is an implementation of SQLAlchemy’s Dialect System. It implements various classes that are specific to interacting with the teradata dbapi, construction of sql specific to Teradata, and more. The project is still in an incubation phase. See test/usage_test for how the dialect is used for the core expression language api.

Design Principles

* Have a simple setup process and a minimal learning curve
* Provide a simple core that is modular and extensible
* Be an easy way to interact with the database out of the box

Quick Start

Install the sqlalchemy-teradata library:

[sudo] pip install sqlalchemy-teradata

Setup the connect url to point to the database. See the example in the wiki.

Get Involved

* We welcome your contributions in: Documentation, Bug Reporting, Tests, and Code (Features & Bug Fixes)
* You can contribute to our documentation by going to our github wiki.
* All code submissions are done through pull requests.

We have a room in gitter. It is still based off of the old repo but it will do.


The dialect is tested using the pytest plugin. You can run pytest in the sqlalchemy-teradata directory with the py.testcommand. By default the tests are run against the database URI specified in setup.cfg under the [db] heading.

You can override the dburi you would like the tests to run against:

py.test --dburi:teradata://user:pw@host

To view the databases aliased in setup.cfg:

py.test --dbs all

To run the tests against an aliased database URI in setup.cfg:

py.test --db default
py.test --db teradata

If the --db flag nor the --dburi flag are specified when running py.test, the database uri specified as default in setup.cfg is used.

Typical usage:

# test all the things (against default)!
py.test -s test/*

# run tests in this file
py.test -s test/test_suite.py

# run TestClass in the the file
py.test -s test/test_suite.py::TestClass

# just run a specific method in TestClass
py.test -s test/test_suite.py::TestClass::test_func

see the pytest docs for more info

See Also

  • PyTd: the DB API 2.0 implementation found in the teradata module
  • sqlalchemy_aster: A SQLAlchemy dialect for aster