blob: f4aa81d159758289ecc539e09c3001db1a5b8edb [file] [log] [blame]
= ODBC Driver
== Overview
Apache Ignite 3 includes an ODBC driver that allows you both to select and to modify data stored in a distributed cache by using standard SQL queries and native ODBC API. ODBC driver uses your link:clients/overview[client connection configuration].
ODBC driver only provides thread-safety at the connections level. This means that you should not access the same connection from multiple threads without additional synchronization, though you can create separate connections for every thread and use them simultaneously.
The ODBC driver implements version 3.8 of the ODBC API. For detailed information on ODBC please refer to link:https://msdn.microsoft.com/en-us/library/ms714177.aspx[ODBC Programmer's Reference].
== Installing ODBC Driver
To use ODBC driver, register it in your system so that your ODBC Driver Manager will be able to locate it.
=== Installing on Windows
NOTE: Microsoft Visual C++ 2017 Redistributable Package should be installed first.
Launch the provided installer and follow the instructions.
=== Installing on Linux
To build and install ODBC driver on Linux, you need to first install
ODBC Driver Manager. The ODBC driver has been tested with link:http://www.unixodbc.org[UnixODBC].
==== Download from website
You can get the built rpm or deb package from the provided website. Then, install the package locally to use it.
== Supported Data Types
The following SQL data types are supported:
- `SQL_CHAR`
- `SQL_VARCHAR`
- `SQL_LONGVARCHAR`
- `SQL_SMALLINT`
- `SQL_INTEGER`
- `SQL_FLOAT`
- `SQL_DOUBLE`
- `SQL_BIT`
- `SQL_TINYINT`
- `SQL_BIGINT`
- `SQL_BINARY`
- `SQL_VARBINARY`
- `SQL_LONGVARBINARY`
- `SQL_GUID`
- `SQL_DECIMAL`
- `SQL_TYPE_DATE`
- `SQL_TYPE_TIMESTAMP`
- `SQL_TYPE_TIME`
== Using pyodbc
Ignite can be used with link:https://pypi.org/project/pyodbc/[pyodbc]. Here is how you can use pyodbc in Apache Ignite 3:
- Install pyodbc
+
[source,shell]
----
pip3 install pyodbc
----
+
- Import pyodbc to your project:
+
[source,python]
----
import pyodbc
----
+
- Connect to the database:
+
[source,python]
----
conn = pyodbc.connect('Driver={Apache Ignite 3};Address=127.0.0.1:10800;')
----
+
- Set encoding to UTF-8:
+
[source,python]
----
conn.setencoding(encoding='utf-8')
conn.setdecoding(sqltype=pyodbc.SQL_CHAR, encoding="utf-8")
conn.setdecoding(sqltype=pyodbc.SQL_WCHAR, encoding="utf-8")
----
+
- Get data from your database:
+
[source,python]
----
cursor = conn.cursor()
cursor.execute('SELECT * FROM table_name')
----
For more information on using pyodbc, use the link:https://github.com/mkleehammer/pyodbc/wiki[official documentation].