Reputation: 21
I am trying to connect to Teradata DB via python using teradatasql module. Below is my code which is simple one.
import teradatasql
import pandas as pd
query="select * from DBC.tablesv sample 10"
with teradatasql.connect(host='<host ip>', user='<username>', password='<password for user>') as connect:
df = pd.read_sql(query, connect)
print(df.head())
But I am getting error message on execution like below. I am a beginner to database programming. Any help from experts will be deeply appreciated.
----------------------------------------------------------------
Traceback (most recent call last):
File "/data/home/uk393e/anaconda3-5.2.0/lib/python3.6/site-packages/pandas/io/sql.py", line 1400, in execute
cur.execute(*args)
File "/data/home/uk393e/anaconda3-5.2.0/lib/python3.6/site-packages/teradatasql/__init__.py", line 649, in execute
self.executemany (sOperation, None, ignoreErrors)
File "/data/home/uk393e/anaconda3-5.2.0/lib/python3.6/site-packages/teradatasql/__init__.py", line 896, in executemany
raise OperationalError (sErr)
teradatasql.OperationalError: [Version 17.0.0.2] [Session 91835188] [Teradata Database] [Error 8056] A message was received that failed to follow the required security policy
at gosqldriver/teradatasql.(*teradataConnection).formatDatabaseError TeradataConnection.go:1138
at gosqldriver/teradatasql.(*teradataConnection).makeChainedDatabaseError TeradataConnection.go:1154
at gosqldriver/teradatasql.(*teradataConnection).processErrorParcel TeradataConnection.go:1217
at gosqldriver/teradatasql.(*TeradataRows).processResponseBundle TeradataRows.go:1716
at gosqldriver/teradatasql.(*TeradataRows).executeSQLRequest TeradataRows.go:552
at gosqldriver/teradatasql.newTeradataRows TeradataRows.go:418
at gosqldriver/teradatasql.(*teradataStatement).QueryContext TeradataStatement.go:122
at gosqldriver/teradatasql.(*teradataConnection).QueryContext TeradataConnection.go:2083
at database/sql.ctxDriverQuery ctxutil.go:48
|
|
|
File "/data/home/uk393e/anaconda3-5.2.0/lib/python3.6/site-packages/teradatasql/__init__.py", line 896, in executemany
raise OperationalError (sErr)
pandas.io.sql.DatabaseError: Execution failed on sql: select * from DBC.tablesv
[Version 17.0.0.2] [Session 91835188] [Teradata Database] [Error 8056] A message was received that failed to follow the required security policy
at gosqldriver/teradatasql.(*teradataConnection).formatDatabaseError TeradataConnection.go:1138
at gosqldriver/teradatasql.(*teradataConnection).makeChainedDatabaseError TeradataConnection.go:1154
at gosqldriver/teradatasql.(*teradataConnection).processErrorParcel TeradataConnection.go:1217
at gosqldriver/teradatasql.(*TeradataRows).processResponseBundle TeradataRows.go:1716
at gosqldriver/teradatasql.(*TeradataRows).executeSQLRequest TeradataRows.go:552
at gosqldriver/teradatasql.newTeradataRows TeradataRows.go:418
at gosqldriver/teradatasql.(*teradataStatement).QueryContext TeradataStatement.go:122
at gosqldriver/teradatasql.(*teradataConnection).QueryContext TeradataConnection.go:2083
at database/sql.ctxDriverQuery ctxutil.go:48
at database/sql.(*DB).queryDC.func1 sql.go:1464
at database/sql.withLock sql.go:3032
at database/sql.(*DB).queryDC sql.go:1459
at database/sql.(*Conn).QueryContext sql.go:1701
at main.goCreateRows goside.go:652
at main._cgoexpwrap_212fad278f55_goCreateRows _cgo_gotypes.go:357
at runtime.call64 asm_amd64.s:574
at runtime.cgocallbackg1 cgocall.go:316
at runtime.cgocallbackg cgocall.go:194
at runtime.cgocallback_gofunc asm_amd64.s:826
at runtime.goexit asm_amd64.s:2361
unable to rollback
------------------------------------------------------------
Upvotes: 0
Views: 5231
Reputation: 2080
As noted in the "Limitations" section of the documentation, the teradatasql driver does not yet automatically recognize centrally enforced encryption. You will need to explicitly add the encryptdata="true"
parameter when invoking the connect
method.
Upvotes: 1