Connecting to Aster Teradata Python - python

I want to connect to Teradata Aster, I have been searched through multiple sites and read documentation but with not luck. I am able to connect to Teradata just fine, but not to Aster Teradata.
code for teradata that works, but I don't know how to tweak this to work for aster:
import teradata
udaExec = teradata.UdaExec(appName="", version="1.0", logConsole=False)
session = udaExec.connect(method="odbc", system="TDD...", username="...", password="...", authentication="LDAP");

To connect to Aster use native Teradata Aster ODBC driver. Follow this link and choose "Aster Client Tools" for your platform to find and download the driver.
Then use a Python package for ODBC database connectivity such as pyodbc. I used similar method in R but never with Python, one example I found for Python and Teradata is here.

Related

Connect python to teradata without the driver, on unix

I am using python 3.x and unix for accessing teradata. I am totally new to teradata and python. I could easily connect to oracle with python but for teradata there is this no driver issue coming. I will not be able to do any unix side installations due to company policy. Can you please suggest ant work around where i can connect to the teradata using python without any drivers, i know i may sound foolish, but thats what my situation is. TIA
As Fred said, Teradata offers a Teradata SQL Driver for Python.
Here is a link to the documentation: https://github.com/Teradata/python-driver
Install the driver with: pip install teradatasql

beginner python issue: pyodbc connection

beginner python programmer here,
I'm having an issue with pyodbc. I've included two images. The first is the code itself... and here it is again in text:
def retrieve_db(self):
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=Students;Trusted_Connection=yes;')
cursor = conn.cursor()
cursor.execute("SELECT * FROM tbl_student")
for row in cursor:
print(row)
The issue is that I have an .mdf that I'm trying to connect to but when I execute the program to retrieve all records it does not connect. Really not sure what the issue is. Reading other posts across the web I believe it's something to do with the connection string itself but I can't figure out how to syntax the correct param. The pyodbc connector was installed correctly as far as I'm aware.
Can anyone help? In particular does anyone know how to create and connect to an.mdf using Visual Studio and the python pyodbc? Also, when I attempt to connect to a local DB created in MySQL workbench, I get the same issue. Any suggestions?
code in editor
the .mdf using the built in sql server on Visual Studio
the error i get
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=Students;Trusted_Connection=yes;')
According to your code you're trying to use "SQL Server" driver. Is ODBC Driver for SQL Server properly installed on your system?
If not, please, download it from Microsoft website and install.
https://learn.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver15

Connect Sybase with Python in Windows 10

I was trying to retrieve some data from a Sybase database using python, but I could not make it.
I tried with sqlanydb but it didn't work. I also tried with Devart ODBC Driver which is a trial version driver. But I'm looking for something which is a free/open source.
I have tried with pypyodbc and listed the driver which is in my system by running the following code.
>>> import pypyodbc
>>> pypyodbc.driver()
>>> ['SQL Server', 'SQL Server']
So right now I didn't know which driver I have to use and how to configure it in windows 10 so that I can connect to Sybase.
If you set up an ODBC source using regular ODBC Admin, let's call the DSN ShubhamSybDB, then your connection should open as simple as this (from a .py code):
import pyodbc
conn = pyodbc.connect('DSN=ShubhamSybDB;UID=<username>;PWD=<password>')

pyodbc fails to connect to database, but IBM data studio connects with same credentials

I'm trying to connect to a database on an IBM machine, and I can connect just fine via the IBM desktop client "IBM Data Studio." However, when I try to connect with pyodbc it fails to connect. I've received a series of errors but it seems the main response is along the lines of the following
pyodbc.OperationalError: ('08001', u'[08001] [Microsoft][ODBC SQL Server Driver]
[TCP/IP Sockets]SQL Server does not exist or access denied. (17)
(SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]ConnectionOpen (
Connect()). (10061); [08001] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute (0)')
My code follows:
import pyodbc
# Specifying the ODBC driver, server name, database, etc. directly
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=*****; PORT=50000;DATABASE=****;UID=***;PWD=***')
# Create a cursor from the connection
cursor = cnxn.cursor()
cnxn.close()
I am working on a Windows machine.
You cannot use an ODBC Driver for Microsoft SQL Server, to connect to an instance of IBM DB2 (nor to any DBMS other than Microsoft SQL Server).
You need an ODBC Driver for IBM DB2 for this connection, such as those from my employer.
You could also use an ODBC-to-JDBC Bridge Driver, in combination with a JDBC Driver for IBM DB2, such as JTOpen (open source, from IBM).
Just because a jdbc connection from Data-Studio is working, it does not mean that your pyodbc will connect to Db2. pyodbc does not use jdbc, instead it will use the CLI/ODBC interface to Db2 which gets implemented by a suitable driver.
To use Db2 from pyodbc on Windows, ensure you first have either a Db2-client installed on Windows, or a Db2-server installed installed on Windows.
There are many kinds of Db2-clients. Much depends on the operating-system that runs your Db2-server (Z/OS, i-Series, Linux, Unix, Windows), and what kind of activities you want to perform on the client (developing, administering/monitoring, querying, or all three).
For some target platforms there are non-IBM drivers, but I won't discuss those.
In python, you can choose to connect to a database either with a DSN (Data Source Name) (usually this involves a shorter connection string)
or without a DSN (longer connection string containing all the details).
When learning, it may be easier to get Microsoft Windows to do most of the initial work with odbcad32.
This is most easy if the Db2-client is already configured to access one or more Db2-databases . The prereq is that the driver supports CLI/ODBC.
To define a DSN (either a system-DSN or a user-DSN) use the Microsoft odbcad32 tool to point to your Db2 database and verify connectivity.
If the Db2-server runs on Z/OS or i-Series, special licensing requirements may apply depending on whether you are directly connecting to the target Db2-server or whether you are using a Db2-connect gateway.
Take a note of the exact DRIVER string inside odbcad32 for the Db2-database, including case and spaces because you will need that in your python code.
For example, that driver name might look like 'IBM DB2ODBC DRIVER - DB2COPY1' if you have a local Db2-server installed on Windows (such as the free Db2-Express-C).
Verify that the connection to the Db2-database is successful inside odbcad32. That is crucial.
When odbcad32 succeeds to connect then pyodbc will succeed to connect usually.
In your python code, your connection-string can either use the DSN or explicitly quote the DRIVER/SERVER/PORT/DATABASE/UID/PWD, along with any other required settings on the connection string.
Remember also that you don't have to use pyodbc. There are other options for python to interact with Db2-Servers. Make an informed choice and do your research.
You can also use the IBM supplied module "ibm_db" or the DBI interface module "ibm_db_api", or if you are using an object relational mapper you can use the SQLAlchemy adapter (ibm_db_sa), or you can use django framework.
Read all about that in the Db2 documentation here.
https://www.ibm.com/support/knowledgecenter/en/SSEPGG_10.5.0/com.ibm.swg.im.dbclient.python.doc/doc/c0054366.html
I have solved the problem! The issue was that I was missing the "iSeries Access ODBC Driver". I don't think it's available online, although I could be wrong, I had to have our database guy help install it. Now I can connect through both the ibm_db and pyodbc libraries, after setting up my DSN under "odbcad32.exe." This took a while to solve but mostly because of the lack of informative documentation from IBM. Hopefully, this helps anyone in the same situation.

TimesTen database connection issue in python

I have 2 machines setup:
RDP terminal with timesten client 11.2.1 and pyodbc==3.0.7 and works great. I use this connection string:
cnxn = pyodbc.connect('DSN=myhostip;UID=myusername;PWD=mypass')
local machine with timesten client 11.2.2 and pyodbc==4.0.22 (I've also tried older versions, like 3.0.7)
and when I use the connection string:
cnxn = pyodbc.connect('DSN=myhostip1;UID=myusername1;PWD=mypass1')
I get this error:
pyodbc.Error: ('HY010', u'[HY010] [Microsoft][ODBC Driver Manager] The driver is incapable of supporting the current environment attributes. (0) (SQLDriverConnect)').
Both databases on both machines are practically the same, so difference is only in timesten driver version.
Or what else could be the problem?
I have set up DSNs on both machines, and I connect to them in SQLDeveloper.
I've tried different timesten clients and pyodbc versions, but got same error everytime.
It's the only way that I know of to connect to timesten DB, can anyone please help me solve this error, or maybe tell about another way,except pyodbc, to connect?
See this answer on how to connect to TimesTen via Python:
python access to TimesTen
Use cx_Oracle via tnsnames.ora as this is the method that Oracle will support in TimesTen 18.1.3
Please avoid using any ODBC based method to connect to Python as none of these techniques are developed or tested by Oracle.

Categories

Resources