使用fastload的Teradatasql python模块在连接字符串中使用加密密码的问题

2024-06-16 14:07:48 发布

您现在位置:Python中文网/ 问答频道 /正文

Get error无法分析JSON连接参数,这是由于使用加密密码时字符串转义代码中的无效字符“C”造成的

更新到teradasql的最新版本(16.20.0.48)以获得fastload支持。我的密码使用存储的密码保护进行加密,并与其他teradata sql命令一起使用。当为fastload使用{fn teradata_try_fastload}函数时,我将得到连接错误。当我用实际密码替换密码时,代码就可以工作了。在

变量

userID = 'userID'
userPWD3 = 'password' #works with everything
userPWD = r'ENCRYPTED_PASSWORD(file:\\Path\JTErc\PassKey.properties,file:\\Path\JTErc\EncPass.properties)' #works with the CREATE and DROP tables, but not fastload

连接字符串

^{2}$

快速负载

with con.cursor() as cur:
    sRequest = "{fn teradata_nativesql}{fn teradata_autocommit_off}"
    print (sRequest)
    cur.execute (sRequest)

    aaoValues = [[1,None,],]

    sInsert = "{fn teradata_try_fastload}INSERT INTO " + sTableName + "(?, ?)"
    print (sInsert)
    cur.execute (sInsert, aaoValues)

获取以下错误:

File "AppData\Local\Continuum\anaconda3\lib\site-packages\teradatasql\__init__.py", line 770, in executemany
    raise OperationalError (sErr)

OperationalError: Unable to parse JSON connection parameters
 at gosqldriver/teradatasql.ParseConParams ConParams.go:59
 at gosqldriver/teradatasql.(*teradataFastLoadManager).connectFastLoad TeradataFastLoadManager.go:548
 at gosqldriver/teradatasql.(*teradataFastLoadManager).executeInsert TeradataFastLoadManager.go:1170
 at gosqldriver/teradatasql.newTeradataRows TeradataRows.go:287
 at gosqldriver/teradatasql.(*teradataStatement).QueryContext TeradataStatement.go:122
 at gosqldriver/teradatasql.(*teradataConnection).QueryContext TeradataConnection.go:2021
 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:598
 at main._cgoexpwrap_e6e101e164fa_goCreateRows _cgo_gotypes.go:331
 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
Caused by invalid character 'C' in string escape code

Tags: go密码sqlwithdatabaseatruntimefn