Python 通过 teradatasql 模块连接到 Teradata 时出错 || (未能遵循所需的安全策略)
Error connecting to Teradata by Python via teradatasql module || ( failed to follow the required security policy)
我正在尝试使用 teradatasql 模块通过 python 连接到 Teradata DB。下面是我的代码,很简单。
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())
但是我在执行时收到如下错误消息。我是数据库编程的初学者。非常感谢专家的任何帮助。
----------------------------------------------------------------
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
------------------------------------------------------------
如文档“限制”部分所述,teradatasql 驱动程序尚未自动识别集中强制加密。调用 connect
方法时需要显式添加 encryptdata="true"
参数。
我正在尝试使用 teradatasql 模块通过 python 连接到 Teradata DB。下面是我的代码,很简单。
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())
但是我在执行时收到如下错误消息。我是数据库编程的初学者。非常感谢专家的任何帮助。
----------------------------------------------------------------
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
------------------------------------------------------------
如文档“限制”部分所述,teradatasql 驱动程序尚未自动识别集中强制加密。调用 connect
方法时需要显式添加 encryptdata="true"
参数。