Skip to content

Commit

Permalink
Added some basic how to
Browse files Browse the repository at this point in the history
  • Loading branch information
Jan authored and Jan committed Nov 3, 2014
1 parent c4e6034 commit 22396a8
Showing 1 changed file with 58 additions and 1 deletion.
59 changes: 58 additions & 1 deletion README.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
SQLAlchemy Dialect for EXASOL DB
--------------------------------
================================


.. image:: https://travis-ci.org/blue-yonder/sqlalchemy_exasol.svg?branch=master
Expand All @@ -15,3 +15,60 @@ This is an SQLAlchemy dialect for the EXASOL database.

- EXASOL: http://www.exasol.com
- SQLAlchemy: http://www.sqlalchemy.org

How to get started
------------------

We assume you have a good understanding of (unix)ODBC. If not, make sure you read their documentation carefully - there are lot's of traps to step into.

Get the EXASolution database
````````````````````````````

If you do not have access to an EXASolution database, download EXASolo for free from EXASOL: http://www.exasol.com/en/test-drive/

The database is a VM image. You will need VirtualBox, VMWare Player, or KVM to run the database. Start the database and make sure you can connect to it as described in the How-To from EXASOL.

Meet the system requirements
````````````````````````````

On Linux/Unix like systems you need:

- the packages unixODBC and unixODBC-dev > 2.2.14

This comment has been minimized.

Copy link
@StephanErb

StephanErb Nov 3, 2014

Contributor

Shoudn't that be >=? Same for the python version.

This comment has been minimized.

Copy link
@jank

jank Nov 4, 2014

Yep, changed version requirements

- Python > 2.7
- Download and install the ODBC client drivers from EXASOL
- configure ODBC.ini and ODBCINST.ini

Setup you python project and install sqlalchemy-exasol
``````````````````````````````````````````````````````

::

> pip install sqlalchemy-exasol
Talk to EXASolution using SQlAlchemy
````````````````````````````````````

::

from sqlalchemy import create_engine
e = create_engine("exa+pyodbc://A_USER:A_PASSWORD@192.168.1.2..8:1234/my_schema")
r = e.execute("select 42 from dual").fetch_all()

The dialect supports two connection urls for create_engine. A DSN (Data Source Name) mode and a host mode:

======== ====================================================================
DSN url 'exa+pyodbc://USER:PWD@exa_test'
Host url 'exa+pyodbc://USER:PWD@192.168.14.227..228:1234/my_schema?parameter'
======== ====================================================================

*Note*:

- Schema name and parameters are optional for the host url string
- Always use all lower-case identifiers for schema, table and column names. SQLAlchemy treats all lower-case identifiers as case-insensitive, the dialect takes care of transforming the identifier into a case-insensitive representation of the specific database (in case of EXASol this is upper-case as for Oracle)
- As of EXASol client driver version 4.1.2 you can pass the flag 'INTTYPESINRESULTSIFPOSSIBLE=y' in the connection string (or configure it in your DSN). This will convert DECIMAL data types to Integer-like data types. Creating integers is a factor three faster in Python than creating Decimals.

Troubleshooting
```````````````

The unixodbc Stack is not the most friendly for programmers. If you get strange errors from the driver mangager, you might have an issue with the names of the unixodbc libs. Have a look at https://github.com/blue-yonder/sqlalchemy_exasol/blob/master/fix_unixodbc_so.sh to find ideas on how to fix this on Ubuntu. Good luck!

0 comments on commit 22396a8

Please sign in to comment.