用于python的teradata sql驱动程序

teradatasql的Python项目详细描述


用于python的teradata sql驱动程序

这个包使python应用程序能够连接到teradata数据库。

此包实现了pep-249 python数据库api规范2.0

此软件包需要64位Python3.4或更高版本,并在Windows、MacOS和Linux上运行。不支持32位python。

有关社区支持,请访问连接论坛

要获得Teradata客户支持,请访问Teradata Access。

2019 Teradata版权所有。保留所有权利。

目录

目录链接在pypi上不起作用,因为apypi限制

< A/>

功能

用于python的teradata sql驱动程序是一个dbapi驱动程序,它使python应用程序能够连接到teradata数据库。用于python的teradata sql驱动程序实现了pep-249 python数据库api规范2.0

teradata sql driver for python是一个年轻的产品,它提供了一个基本的特性集。我们正在努力向teradata sql驱动程序python添加特性,我们的目标是与teradata jdbc驱动程序的特性对等。

目前,面向python的teradata sql驱动程序提供以下功能。

  • 支持与Teradata Database 14.10及更高版本一起使用。经过非正式测试,可与Teradata Database 12.0及更高版本配合使用。
  • 警察发现。
  • 使用td2jwtldapkrb5(kerberos)或tdnego登录机制进行加密登录。
  • 通过encryptdata连接参数启用数据加密。
  • 通过UTF8会话字符集传输的Unicode字符数据。
  • 自动提交ANSI和Tera事务模式。
  • Teradata Database 16.0及更高版本支持1 MB行。
  • 返回多个结果集的多语句请求。
  • 大多数JDBC转义语法。
  • 带有问号参数标记的参数化SQL请求。
  • 多行数据绑定到问号参数标记的参数化批处理SQL请求。
  • ElicitFile协议支持用于创建外部UDF或存储过程并将文件从客户端上载到数据库的DDL命令。
  • 创建过程替换过程命令。
  • 存储过程动态结果集。

< A/>

限制

  • 总是使用utf8会话字符集。不支持字符集连接参数。
  • 以下复杂数据类型尚不受支持:xmljson数据集存储格式avro,以及数据集存储格式csv
  • 尚不支持由中央管理部门管理的数据加密。要启用数据加密,必须为encryptdata连接参数指定true值。
  • 尚不支持梯形并发连接。
  • 尚未支持可恢复的网络协议和重新驱动。
  • Fastload尚未提供。
  • FastExport尚未提供。
  • 监视器分区支持尚不可用。

< A/>

安装

使用pip为python安装teradata sql驱动程序。

<表><广告>平台 命令 < /广告><正文>MacOS或Linuxpip安装teradasql窗口py-3-m pip安装teradasql

升级到新版本的teradata sql driver for python时,可能需要使用pip install的--no cache dir选项来强制下载新版本。

<表><广告>平台 命令 < /广告><正文>MacOS或Linuxpip安装--无缓存目录-u teradasql窗口py-3-m pip安装——无缓存目录-u teradasql

< A/>

许可证

teradata sql driver for python的使用由teradata sql driver for python的许可协议控制。

安装了teradata sql driver for python后,许可证第三方许可证文件将放在python安装目录下的teradasql目录中。

< A/>

文档

安装teradata sql driver for python后,readme.md文件将放在python安装目录下的teradasql目录中。这允许您在未连接到Internet时脱机查看文档。

readme.md文件是一个纯文本文件,其中包含用于Python的Teradata SQL驱动程序的文档。虽然可以使用任何文本文件查看器或编辑器查看文件,但使用理解标记格式的编辑器,您将获得最佳的查看体验。

< A/>

示例程序

提供了示例程序来演示如何使用teradatsql驱动程序。安装teradata sql driver for python后,示例程序将放在python安装目录下的teradasql/samples目录中。

示例程序使用一个假的teradata数据库主机名whomooz、用户名guest和密码please进行编码。在运行示例程序之前,请替换实际的Teradata数据库主机名和凭据。

<表><广告>程序 目的 < /广告><正文>batchInsert.py演示如何插入一批行charpadding.py演示Teradata数据库的字符导出宽度行为RCommitrollback.py演示自动提交关闭时的提交和回滚方法。driverdatabaseversion.py显示Teradata SQL驱动程序版本和Teradata数据库版本elicitfile.py演示C源文件上载以创建用户定义函数(UDF)帮助会话.py显示会话信息loadcsvfile.py演示如何将csv文件中的数据加载到表中来自prepare.py的元数据演示如何准备SQL请求并获取SQL语句元数据存储proc.py演示如何创建和调用SQL存储过程tjencryptpassword.py创建加密的密码文件

< A/>

为python使用teradata sql驱动程序

为了在python中使用teradata sql驱动程序,python脚本必须导入teradasql包。

import teradatasql

导入teradasql包后,python脚本调用teradasql.connect函数打开到teradata数据库的连接。

您可以将连接参数指定为json字符串,指定为kwargs,或者使用这两种方法的组合。函数的第一个参数是可选的json字符串。函数的第二个参数和随后的参数是可选的。

连接参数仅指定为kwargs

con = teradatasql.connect(host="whomooz", user="guest", password="please")

仅指定为json字符串的连接参数:

con = teradatasql.connect('{"host":"whomooz","user":"guest","password":"please"}')

使用组合指定的连接参数:

con = teradatasql.connect('{"host":"whomooz"}', user="guest", password="please")

当指定参数组合时,指定为kwargs的连接参数优先于json字符串中指定的同名连接参数。

< A/>

连接参数

下表列出了teradata sql driver for python当前提供的连接参数。

我们的目标是在连接参数名称和功能方面,使teradata sql驱动程序(用于python)和teradata jdbc驱动程序提供的连接参数保持一致。为了进行比较,teradata jdbc驱动程序连接参数在这里被记录下来。 <表><广告>参数 默认值 键入说明 < /广告><正文>帐户字符串指定Teradata数据库帐户。相当于teradata jdbc驱动程序帐户连接参数。列名"假"引用布尔值控制光标的行为。说明序列名称项。相当于teradata jdbc drivercolumn\u name连接参数。false指定游标。descriptionsequencenameitem提供as子句名称(如果可用)、列名(如果可用)或列标题。true指定光标。descriptionsequencenameitem提供列名(如果可用),但在statementinfo packet支持不可用时无效。cop"真"引用布尔值指定是否执行cop发现。相当于teradata jdbc驱动程序cop连接参数。coplast"假"引用布尔值指定cop发现如何确定最后一个cop主机名。相当于teradata jdbc drivercoplastconnection参数。当coplastfalse或省略,或者cop发现关闭,则不会对coplast主机名进行dns查找。当coplasttrue且启用cop发现时,将对coplast主机名进行dns查找。dbs_端口"1025"带引号的整数指定Teradata数据库端口号。相当于teradata jdbc驱动程序dbs_port连接参数。加密数据"假"引用布尔值控制Teradata数据库和用于Python的Teradata SQL驱动程序之间交换的数据的加密。相当于teradata jdbc驱动程序encryptdata连接参数。假结果集"假"引用布尔值控制包含语句元数据的假结果集是否位于每个实际结果集之前。主机字符串指定Teradata数据库主机名。lob_支持"真"引用布尔值控制LOB支持。相当于teradata jdbc驱动程序lob_支持连接参数。日志"0"带引号的整数控制调试日志记录。相当于teradata jdbc driverlogconnection参数。此参数的行为可能在将来发生更改。此参数的值当前定义为一个整数,其中1位控制函数和方法跟踪,2位控制调试日志记录,4位控制发送和接收消息十六进制转储,8位控制计时。通过将1、2、4和/或8相加来组合该值。日志数据字符串指定所选登录身份验证方法的额外数据。相当于teradata jdbc驱动程序logdata连接参数。logmech"TD2"字符串指定登录身份验证方法。相当于teradata jdbc driverlogmech连接参数。可能的值是td2(默认值)、jwtldapkrb5对于kerberos,或者tdnego最大消息正文"2097000"带引号的整数尚未完全实现并打算将来使用。相当于teradata jdbc驱动程序max_message_body连接参数。分区"dbc/sql"字符串指定Teradata数据库分区。相当于teradata jdbc驱动程序分区连接参数。密码字符串指定Teradata数据库密码。相当于teradata jdbc驱动程序密码连接参数。SIP U支持"真"引用布尔值控制是否使用StatementInfoParcel。相当于teradata jdbc驱动程序sip_支持连接参数。teradata_值"真"引用布尔值控制是否对某些结果集列值类型使用str或更特定的python数据类型。有关详细信息,请参阅下表。t模式"默认"字符串指定事务模式。相当于teradata jdbc驱动程序tmode连接参数。可能的值是default(默认值)、ansi,或tera用户字符串指定Teradata数据库用户名。相当于teradata jdbc驱动程序用户连接参数。

< A/>

警察发现

当连接参数coptrue或省略时,用于python的teradata sql驱动程序提供通信处理器(communications processor,cop)发现行为。当连接参数copfalse时,将关闭cop发现功能。

一个teradata数据库系统可以由多个teradata数据库节点组成。可以将一个或多个teradata数据库节点配置为运行teradata数据库网关进程。运行teradata数据库网关进程的每个teradata数据库节点称为通信处理器或cop。cop发现是指识别所有可用的cop主机名及其ip地址的过程。cop主机名可以在dns中定义,也可以在客户机系统的主机文件中定义。teradata强烈建议在dns中定义cop主机名,而不是在客户机系统的主机文件中定义。在dns中定义cop主机名提供集中管理,并在重新配置teradata数据库时启用对cop主机名的集中更改。

cop last连接参数指定cop发现如何确定最后一个cop主机名。

  • 如果coplastfalse或省略,或者cop发现已关闭,则用于python的teradata sql驱动程序将不会对coplast主机名执行dns查找。
  • cop lasttrue且启用cop发现时,用于python的teradata sql驱动程序将首先对coplast主机名执行dns查找,以在执行cop发现之前获取最后一个cop主机名的ip地址。随后,在cop发现过程中,当遇到未知的cop主机名或遇到其ip地址与coplast主机名的ip地址匹配的cop主机名时,用于python的teradata sql驱动程序将停止搜索cop主机名。

coplast指定为true可以提高DNS响应DNS查找失败的速度慢的性能,并且对于从不返回DNS查找失败的DNS是必需的。

在执行cop发现时,用于python的teradata sql驱动程序从cop1开始,cop1附加到数据库主机名,然后继续执行cop2、cop3、…、copn。用于python的teradata sql驱动程序支持cop发现的域名限定和coplast主机名。建议使用域名限定,因为它可以通过避免对DNS搜索后缀进行不必要的DNS查找来提高性能。

下表说明了为名为"whomooz"的假设三节点teradata数据库系统执行的dns查找。

<表><广告>< >< < 没有域名资格 具有域名资格
(推荐)< /广告><正文>指定的应用程序
teradata数据库主机名whomoozwhomooz.domain.com默认值:打开cop discovery,并且coplastwhomoozcop1>10.0.0.1
whomoozcop2>10.0.0.2
whomoozcop3>10.0.0.3
whomoozcop4>未定义whomoozcop1.domain.com10.0.0.1
whomoozcop2.domain.com10.0.0.2
whomoozcop3.domain.com10.0.0.3
whomoozcop4.domain.com>未定义cop discovery已打开,并且coplastistrue
执行dns查找,直到cop hostname为fo其IP地址与coplast主机名匹配或遇到未知cop主机名的undwhomoozcopat10.0.0.3
whomoozcop110.0.0.1
whomoozcop210.0.0.2
whomoozcop310.0.0.3whomoozcopat.domain.com>10.0.0.3
whomoozcop1.domain.com>10.0.0.1
whomoozcop2.domain.com>10.0.0.2
whomoozcop3.domain.com>10.0.0.3已关闭cop发现并循环dns,
执行一次返回多个ip地址的dns查找 whomooz10.0.0.110.0.0.210.0.0.3whomooz.domain.com10.0.0.110.0.0.210.0.0.3

循环dns自动旋转ip地址列表以提供负载分配。循环只能在DNS中进行,而不能在客户端系统主机文件中进行。

用于python的teradata sql驱动程序支持为cop主机名和非cop主机名定义多个ip地址。

对于到特定teradata数据库系统的第一个连接,用于python的teradata sql驱动程序生成一个随机数,以索引到cop列表中。对于每个后续连接,用于python的teradata sql驱动程序都会增加保存的索引,直到它返回到第一个位置。此行为提供所有发现的cop的负载分布。

用于python的teradata sql驱动程序将连接失败屏蔽为关闭cop,从而对客户端应用程序隐藏大多数连接失败。只有当该数据库的所有警察都关闭时,才会向应用程序抛出异常。如果一个cop坏了,序列中的下一个cop(包括到第一个cop的环绕)将接收到最初指定给坏cop的额外连接。当在dns中为cop定义了多个ip地址时,用于python的teradata sql驱动程序将尝试连接到cop的每个ip地址,并且仅当连接尝试失败到cop的所有ip地址时,才会考虑关闭cop。

如果cop discovery已关闭,或者dns中未定义cop主机名,则python的teradata sql驱动程序将直接连接到host连接参数中指定的主机名。这允许使用cop发现方法以外的负载分配方案。例如,可以使用循环dns或tcp/ip负载分配产品。cop发现优先于简单的数据库主机名查找。要使用另一种负载分配方案,请确保在dns中未定义cop主机名,或者使用cop作为false关闭cop发现

< A/>

存储密码保护

概述

存储密码保护使应用程序能够以加密形式向teradata sql driver for python提供连接密码。

可以在以下上下文中指定加密密码:

  • 指定为连接参数的登录密码。
  • logdata连接参数中指定的登录密码。

如果密码以前缀加密密码(开头,则指定的密码必须遵循以下格式:

加密密码(文件:密码加密密钥文件名,文件:加密密码文件名

每个文件名前面必须有文件:前缀。必须用一个逗号将密码加密密钥文件名加密密码文件名分开。

passwordencryptionkeyfilename指定包含密码加密密钥和相关信息的文件名. encryptedpasswordfilename指定包含加密密码和相关信息的文件名。下面介绍这两个文件。

存储密码保护由Teradata JDBC驱动程序、Teradata SQL驱动程序(用于Python)和Teradata SQL驱动程序(用于R)提供。这些驱动程序使用相同的文件格式。

设置TjencryptPassword

tjencryptpassword.py是一个示例程序,用于创建用于存储密码保护的加密密码文件。安装teradata sql driver for python后,示例程序将放在python安装目录下的teradasql/samples目录中。

此程序与teradata jdbc驱动程序和teradata sql驱动程序为python提供的存储密码保护一起工作。此程序创建包含密码加密密钥和加密密码的文件,这些文件随后可以通过加密密码(语法)指定。

不需要使用此程序创建包含密码加密密钥和加密密码的文件。您可以开发自己的软件来创建必要的文件。您还可以使用代码> TjBufftToCuff.java/Cult>< /A>示例程序,该程序可与Teradata JDBC驱动程序参考。唯一的要求是,这些文件必须与teradata sql driver for python所期望的格式相匹配,如下所述。

此程序先加密密码,然后立即解密密码,以验证密码是否可以成功解密。此程序模拟了用于python的teradata sql驱动程序的密码解密,旨在公开演示其操作并使社区能够仔细检查。

加密的密码只和这两个文件一样安全。您负责限制对包含密码加密密钥和加密密码的文件的访问。如果攻击者同时获得这两个文件,则可以解密密码。这两个文件的操作系统文件权限应尽可能受到限制和限制,以确保只有预期的操作系统用户ID可以访问这些文件。

这两个文件可以保存在不同的物理卷上,以减少两个文件同时丢失的风险。如果其中一个或两个文件都位于网络卷上,则可以使用加密的有线协议访问网络卷,例如sshfs、加密的nfsv4或加密的smb 3.0。

此程序接受八个命令行参数:

<表><广告>参数 示例 说明 < /广告><正文>转换aes/cbc/nopadding算法/模式/填充的形式指定转换。下表列出了支持的转换。按键键256指定控制加密强度的算法密钥大小。 MAC < /TD>hmacsha256指定消息验证代码(MAC)算法hmacsha1hmacsha256密码加密密钥文件名密钥.属性指定当前目录中的文件名、相对路径名或绝对路径名。这个文件是由这个程序创建的。如果该文件已经存在,它将被新文件覆盖。加密密码文件名encpass.properties指定当前目录中的文件名、相对路径名或abs绝对路径名。必须与PasswordEncryptionKeyFileName不同的文件名或路径名。这个文件是由这个程序创建的。如果该文件已经存在,它将被新文件覆盖。主机名whomooz指定Teradata数据库主机名。用户名客人指定Teradata数据库用户名。密码指定要加密的Teradata数据库密码。密码中的Unicode字符可以用转义序列指定。

命令示例

TjencryptPassword程序使用用于Python的Teradata SQL驱动程序使用加密的密码登录到指定的Teradata数据库,因此必须使用pip install teradasql命令安装用于Python的Teradata SQL驱动程序。

以下命令假定tjencryptpassword.py程序文件位于当前目录中。安装teradata sql driver for python后,示例程序将放在python安装目录下的teradasql/samples目录中。将当前目录更改为python安装目录下的teradasql/samples目录。

下面的示例命令演示如何使用256位AES密钥,以及如何使用HMACSHA256算法。

<表><广告>平台 命令 < /广告><正文>MacOS或Linuxpython tjencryptpassword.py aes/cbc/no添加256 hmacsha256 passkey.properties encpass.properties whomooz guest请窗口py-3 tjencryptpassword.py aes/cbc/nopadding 256 hmacsha256 passkey.properties encpass.properties whomooz guest请

密码加密密钥文件格式

不需要使用TjencryptPassword程序创建包含密码加密密钥和加密密码的文件。您可以开发自己的软件来创建必要的文件,但这些文件必须与teradata sql驱动程序for python所期望的格式相匹配。

密码加密密钥文件是Java属性文件格式的文本文件,使用ISO 8859-1字符编码。

文件必须包含以下字符串属性:

<表><广告>属性说明 < /广告><正文>版本=1版本号必须是1。此属性是必需的。转换算法/模式/填充算法/模式/填充的形式指定转换。下表列出了支持的转换。此属性是必需的。算法
算法此值必须与转换的算法部分相对应。此属性是必需的。match=匹配值密码加密密钥和加密密码文件必须包含相同的匹配值。将比较匹配值,以确保两个指定的文件相互关联,作为"健全性检查"帮助避免配置错误。此属性是必需的。键=六位数此值是密码加密密钥,编码为十六进制数字。此属性是必需的。mac=macalgorithm指定消息验证代码(MAC)算法hmacsha1hmacsha256。存储密码保护先执行加密,然后执行mac,以防止填充oracle攻击。此属性是必需的D.</TD >mackey=十六进制这个值是mac密钥,编码为十六进制数字。此属性是必需的。

TjencryptPassword程序使用时间戳作为共享匹配值,但不需要时间戳。任何共享字符串都可以作为匹配值。时间戳与密码的加密没有任何关系,并且时间戳不能用于解密密码。

加密密码文件格式

加密的密码文件是Java属性文件格式的文本文件,使用ISO859-1字符编码。

文件必须包含以下字符串属性:

<表><广告>属性说明 < /广告><正文>版本=1版本号必须是1。此属性是必需的。match=匹配值密码加密密钥和加密密码文件必须包含相同的匹配值。将比较匹配值,以确保两个指定的文件相互关联,作为"健全性检查"帮助避免配置错误。此属性是必需的。密码=六位数此值是加密密码,编码为十六进制数字。此属性是必需的。params=十六进制此值包含密码算法参数(如果有),编码为十六进制数字。有些密码需要无法从密钥派生的算法参数,例如初始化向量。此属性是可选的,具体取决于密码算法是否具有相关参数。hash=十六进制此值是预期的消息身份验证代码(MAC),编码为十六进制数字。加密后,将使用密文、转换名和算法参数(如果有)计算预期的mac。在解密之前,用于python的teradata sql驱动程序使用密文、转换名和算法参数(如果有的话)计算mac,并验证计算出的mac是否与预期的mac匹配。如果计算的mac与预期的mac不同,则其中一个或两个文件可能已被篡改。此属性是必需的。

虽然params在技术上是可选的,但所有三种分组密码模式cbccfbofb都需要初始化向量,而teradata sql driver for python支持这三种模式。ecb(电子码本)不需要params,但用于python的teradata sql驱动程序不支持ecb。

转换、密钥大小和mac

转换是一个字符串,描述要对给定输入执行的一组操作,以生成转换的输出。转换指定加密算法(如des或aes)的名称,后跟反馈模式和填充方案。

用于python的teradata sql驱动程序支持以下转换和密钥大小。

<表><广告>转换键大小< /广告><正文>des/cbc/nopaddingdes/cbc/pkcs5添加des/cfb/nopaddingdes/cfb/pkcs5添加 des/ofb/nopaddingdes/ofb/pkcs5添加desede/cbc/nopaddingdesede/cbc/pkcs5添加desede/cfb/nopaddingdesede/cfb/pkcs5添加desede/ofb/nopaddingdesede/ofb/pkcs5添加aes/cbc/nopaddingaes/cbc/nopaddingaes/cbc/nopaddingaes/cbc/pkcs5添加aes/cbc/pkcs5添加aes/cbc/pkcs5添加aes/cfb/nopaddingaes/cfb/nopaddingaes/cfb/nopaddingaes/cfb/pkcs5添加aes/cfb/pkcs5添加aes/cfb/pkcs5添加aes/ofb/nopaddingaes/ofb/nopaddingaes/ofb/nopaddingaes/ofb/pkcs5添加aes/ofb/pkcs5添加aes/ofb/pkcs5添加

存储密码保护使用对称加密算法,如des或aes,其中相同的密钥用于密码的加密和解密。存储的密码保护不使用非对称加密算法(如RSA)和单独的公钥和私钥。

cbc(cipher block chaining)是一种分组密码加密方式。在cbc中,每个密文块都依赖于在此之前处理的所有明文块。CBC适用于加密总字节数超过算法块大小的数据,因此适合与存储的密码保护一起使用。

存储密码保护通过使用尾随的空字节扩展utf8编码密码的长度来隐藏加密密码文件中的密码长度。长度将扩展到下一个512字节的边界。

  • 无填充的分组密码,例如aes/cbc/no padding,只能用于加密扩展后字节数是算法块大小的倍数的数据。512字节的边界与许多块密码兼容。例如,aes的块大小为128位(16字节),因此与512字节边界兼容。
  • 带有填充的分组密码,例如aes/cbc/pkcs5padding,可用于加密任何长度的数据。但是,带有填充的cbc易受"填充oracle攻击"的攻击,因此存储密码保护执行加密,然后执行mac,以防止填充oracle攻击。支持mac算法hmacsha1hmacsha256
  • 用于python的teradata sql驱动程序不支持通过cfb8ofb8等模式用作面向字节的密码的块密码。

加密的强度取决于您选择的密码算法和密钥大小。

  • AES使用128位(16字节)、192位(24字节)或256位(32字节)密钥。
  • desede使用192位(24字节)密钥。用于python的teradata sql驱动程序不支持用于desede的128位(16字节)密钥。
  • DES使用64位(8字节)密钥。

与Teradata JDBC驱动程序共享文件

teradata sql驱动程序for python和teradata jdbc驱动程序可以共享包含密码加密密钥和加密密码的文件(如果您使用两个驱动程序都支持的转换、密钥大小和mac算法)。

  • 推荐的兼容性选项是aes/cbc/nopaddinghmacsha256
  • 如果Java环境具有来自Oracle的Java Cryptography Extension(JCE)Unlimited Strength辖区策略文件,请使用256位密钥。
  • 如果使用128位密钥您的Java环境没有无限的权限管辖策略文件。
  • 使用hmacsha1与JDK 1.4.2兼容。

文件位置

对于用于python的teradata sql驱动程序的加密密码(语法),每个文件名前面必须有文件:前缀。 必须用一个逗号将密码加密密钥文件名加密密码文件名分开。文件可以位于当前目录中,用相对路径指定,或用绝对路径指定。

当前目录中的文件示例:

ENCRYPTED_PASSWORD(file:JohnDoeKey.properties,file:JohnDoePass.properties)

具有相对路径的示例:

ENCRYPTED_PASSWORD(file:../dir1/JohnDoeKey.properties,file:../dir2/JohnDoePass.properties)

Windows上具有绝对路径的示例:

ENCRYPTED_PASSWORD(file:c:/dir1/JohnDoeKey.properties,file:c:/dir2/JohnDoePass.properties)

Linux上具有绝对路径的示例:

ENCRYPTED_PASSWORD(file:/dir1/JohnDoeKey.properties,file:/dir2/JohnDoePass.properties)

处理顺序

为加密密码指定的两个文件名必须可由teradata sql driver for python访问,并且必须符合上述属性文件格式。如果无法访问该文件,或者该文件不符合所需的文件格式,则用于python的teradata sql驱动程序将引发异常。

用于python的teradata sql驱动程序验证两个文件中的匹配值是否存在,并相互匹配。如果匹配值彼此不同,则用于python的teradata sql驱动程序会引发异常。将比较匹配值,以确保两个指定的文件相互关联,作为"健全性检查"帮助避免配置错误。TjencryptPassword程序使用时间戳作为共享匹配值,但不需要时间戳。任何共享字符串都可以作为匹配值。时间戳与密码的加密没有任何关系,并且时间戳不能用于解密密码。

在解密之前,用于python的teradata sql驱动程序使用密文、转换名和算法参数(如果有的话)计算mac,并验证计算出的mac是否与预期的mac匹配。如果计算出的mac与预期的mac不同,则用于python的teradata sql驱动程序会引发异常,以指示其中一个或两个文件可能已被篡改。

最后,用于python的teradata sql驱动程序使用解密的密码登录teradata数据库。

< A/>

交易模式

tmode连接参数允许应用程序指定连接的事务模式。

  • "tmode":"ansi"提供美国国家标准协会(ansi)事务语义。建议使用此模式。
  • "tmode":"tera"提供传统的teradata事务语义。此模式仅建议用于需要Teradata事务语义的旧式应用程序。
  • "tmode":"default"提供为teradata数据库配置的默认事务模式,该模式可以是ansi或tera模式。"tmode":"default"是省略tmode连接参数时的默认值。

虽然通常建议使用ansi模式,但请注意每个应用程序都不同,有些应用程序可能需要使用tera模式。ANSI和Tera模式之间的以下差异可能会影响典型的用户或应用程序:

  1. 插入数据的无提示截断在tera模式下发生,但不是ansi模式。在ANSI模式下,Teradata数据库返回一个错误,而不是截断数据。
  2. 默认情况下,以ANSI模式创建的表是multiset。在tera模式下创建的表默认为集合表。
  3. 对于在ANSI模式下创建的表,默认情况下字符列是case-specific。对于在tera模式下创建的表,默认情况下字符列不区分大小写。
  4. 在ANSI模式下,字符文本是特定于大小写的。在tera模式下,字符文本是而不是特定于大小写的

最后两个行为差异加在一起可能会导致字符数据比较(例如在where子句条件中)在tera模式下不区分大小写,但在ansi模式下区分大小写。这反过来又可以在ansi模式和tera模式下产生不同的查询结果。无论模式如何,比较两个不区分大小写的表达式都是不区分大小写的,将一个不区分大小写的表达式与任何类型的另一个表达式进行比较都是区分大小写的,无论模式如何。您可以显式地将表达式转换为case-specificnot case-specific以获得应用程序所需的字符数据比较。

teradata数据库引用/sql请求和事务处理建议对所有新应用程序使用ansi模式。使用ansi模式的主要好处是避免了意外的数据截断。相反,在使用tera模式时,插入数据时会发生静默数据截断,因为静默数据截断是tera模式的一个特性。

使用ansi模式的一个缺点是,只能调用使用ansi模式创建的存储过程,而不能调用使用tera模式创建的存储过程。可能无法以独占方式切换到ansi模式,因为您可能有一些需要tera模式才能正常工作的遗留应用程序。您可以通过在两个不同的用户/数据库中创建两次存储过程,一次使用ansi模式,一次使用tera模式来解决这个缺点。

请参阅teradata database reference/sql请求和事务处理以获取有关ansi和tera事务模式之间差异的完整信息。

< A/>

自动提交

teradata sql driver for python为ansi和tera模式提供了自动提交打开和关闭功能。

第一次建立连接时,它以默认的"自动提交"设置(启用)开始。启用自动提交时,驱动程序只负责管理事务,并提交每个成功执行的sql请求。启用自动提交时,应用程序不应执行任何事务管理SQL命令。启用自动提交时,应用程序不应调用commit方法或rollback方法。

应用程序可以通过调用execute方法来管理事务,方法是使用Teradata_nativeSQLTeradata_auto commit_off转义函数来关闭自动提交。

cur.execute("{fn teradata_nativesql}{fn teradata_autocommit_off}")

当auto commit处于关闭状态时,驱动程序在执行每个sql请求后将当前事务保持打开状态,应用程序分别通过调用commitrollback方法来负责提交或回滚事务。

自动提交保持关闭状态,直到应用程序将其重新打开。

import teradatasql
0

最佳实践建议应用程序避免执行特定于数据库供应商的事务管理命令,例如btetabortcommitrollback,因为这些命令在不同供应商之间有所不同。(teradata的两种模式ansi和tera甚至有所不同)相反,最佳实践建议应用程序只调用标准方法commitrollback进行事务管理。

  1. 当自动提交在ANSI模式下打开时,驱动程序会在每次成功的SQL请求之后自动执行commit
  2. 在ANSI模式下禁用自动提交时,驱动程序不会自动执行commit。当应用程序调用commit方法时,驱动程序执行commit
  3. 在tera模式下打开自动提交时,驱动程序不会执行btet,un应用程序显式执行btet命令本身,这是不推荐的。
  4. 在tera模式下禁用auto commit时,驱动程序在提交应用程序的第一个新事务sql请求之前执行bt。当应用程序调用commit方法时,驱动程序执行et直到事务完成。

作为teradata数据库和teradata客户机接口软件(如用于python的teradata sql驱动程序)之间的连接协议的一部分,从teradata数据库传输到客户机的每条消息都有一个指定位,用于指示会话是否有正在进行的事务或不是。因此,客户机接口软件被告知会话是否有正在进行的事务。

在禁用自动提交的tera模式下,当应用程序使用驱动程序执行sql请求时,如果会话没有进行中的事务,则驱动程序在执行应用程序的sql请求之前自动执行bt。随后,在tera模式下,在auto commit关闭的情况下,当应用程序使用驱动程序执行另一个sql请求,并且会话已经有一个正在进行的事务时,则驱动程序无需在执行应用程序的sql请求之前执行bt

在tera模式下,可以嵌套btet对,teradata数据库跟踪嵌套级别。最外面的bt/et对定义事务范围;内部bt/et对对对事务没有影响,因为teradata数据库不提供实际的事务嵌套。要提交事务,必须重复执行et命令,直到解除嵌套。teradata wire协议位(前面提到过)指示何时解除嵌套并完成事务。当应用程序在tera模式下调用commit方法时,驱动程序反复执行et命令,直到嵌套解除并且事务完成。

在极少数情况下,应用程序可能不遵循最佳实践,并且可能显式执行事务管理命令。此类应用程序必须在执行事务管理命令(如btetabortcommitrollback之前关闭自动提交。应用程序负责为有效的事务模式执行适当的命令。tera模式命令是btetabort。ANSI模式命令是commitrollback。在禁用自动提交的tera模式下打开事务时,应用程序必须特别小心。在tera模式下,在auto commit关闭的情况下,当应用程序执行一个sql请求时,如果会话没有正在进行的事务,那么驱动程序在执行应用程序的sql请求之前会自动执行bt。因此,应用程序不应通过执行bt

import teradatasql
1

请注意,前面的示例都没有显示最佳实践。最佳实践建议应用程序只调用用于事务管理的标准方法commitrollback

import teradatasql
2

< A/>

数据类型

下表列出了teradata sql驱动程序为python支持的teradata数据库数据类型,并指示在结果集行中返回的相应python数据类型。

<表><广告>Teradata数据库数据类型 结果集python数据类型 将teradata的值设置为false< /广告><正文>bigintintblob字节<代码>代码>字节
字节byteintint字符str< < > >clobstr日期datetime.datestr十进制decimal.decimalstr浮点数浮点数整数int间隔年str年到月的间隔str< < > >间隔月份str间隔日str每天到每小时的间隔str每天到分钟的间隔str天到秒的间隔str间隔小时str小时到分钟的间隔str间隔小时到秒str间隔分钟str间隔分钟到秒str间隔秒str< < > >号码decimal.decimalstr期间(日期)str< < > >时段(时间)str时段(带时区的时间)str周期(时间戳)str时段(带时区的时间戳)strsmallintint< < > >时间datetime.timestr时区时间datetime.time使用tzinfostr时间戳datetime.datetimestr带时区的时间戳datetime.datetime使用tzinfostrvarbyte字节< < > >varcharstr< < > >

下表列出了teradata sql driver for python支持的参数化sql bind-value python数据类型,并指明了传输到服务器的相应teradata数据库数据类型。

<表><广告>绑定-值python数据类型 Teradata数据库数据类型 < /广告>< >字节varbytedatetime.date日期datetime.datetime时间戳datetime.datetime使用tzinfo带时区的时间戳datetime.time时间datetime.time使用tzinfo时区时间datetime.timedeltavarchar格式与天到秒的间隔兼容 十进制。十进制号码浮点数浮点数intbigintstrvarchar

转换用于sqlarray数据值,它们可以作为varchar值在数据库中来回传输。

转换用于结构化的udt数据值,它们可以作为varchar值在数据库中来回传输。

< A/>

空值

sqlnull从teradata数据库接收的值作为pythonnone值返回结果集行。

绑定到问号参数标记的pythonnone值作为nullvarchar值传输到teradata数据库。

< A/>

字符导出宽度

用于python的teradata sql驱动程序始终使用utf8会话字符集,并且不支持charset连接参数。注意teradata数据库的字符导出宽度行为,在使用utf8会话字符集时,该行为会将尾随空格填充添加到固定宽度的char数据类型结果集列值。

teradata数据库char(n数据类型是固定宽度的数据类型(包含n个字符),teradata数据库为响应假脱机和网络消息中的字符(n)保留固定字节数交通。

utf8是一种可变宽度字符编码方案,每个字符需要不同的字节数。当使用utf8会话字符集时,teradata数据库将保留字符(n数据类型在响应假脱机和网络消息通信中可以占用的最大字节数。当使用utf8会话字符集时,teradata数据库将填充字符附加到小于保留的最大大小的char(n值的尾部,以便char(n值都占用相同的固定数字o响应假脱机和网络消息通信中的f字节。

通过在sqlselect语句或视图中使用casttrim来解决这个缺点,将固定宽度的char数据类型转换为varchar

给定一个固定宽度的表char列:

创建表mytable(c1 char(10),c2 char(10))

产生尾随空格填充的原始查询:

从MyTable中选择C1、C2

使用casttrim修改查询以避免尾随空格填充:

从mytable中选择cast(c1作为varchar(10)),trim(从c1开始)

或者使用casttrim将查询包装在视图中,以避免后面的空格填充:

将视图myview(c1,c2)创建为select cast(c1创建为varchar(10)),从mytable修剪(从c2开始)

从MyView中选择C1、C2

这项技术也在示例程序charpadding.py

< A/>

模块构造函数

teradasql.connect(jsonconnectionstring参数…

创建到数据库的连接并返回连接对象。

第一个参数是一个可选的json字符串,默认为none。第二个参数和随后的参数是可选的。将连接参数指定为json字符串、kwargs或两者的组合。

当指定参数组合时,连接参数指定为kwargstake prec在json字符串中指定的相同命名连接参数上删除。


teradasql.date(

创建并返回一个datetime.date值。


teradasql.datefromticks(

创建并返回与1970-01-01 00:00:00之后指定秒数相对应的datetime.date值。


teradasql.time(小时分钟

创建并返回一个datetime.time值。


teradasql.timefromticks(seconds

创建并返回与1970-01-01 00:00:00之后指定秒数相对应的datetime.time值。


teradasql.timestamp(小时分钟

创建并返回一个datetime.datetime值。


teradasql.timestampfromticks(seconds

创建并返回与1970-01-01 00:00:00之后指定秒数相对应的datetime.datetime值。

< A/>

模块全局

teradasql.apilevel

字符串常量"2.0"表示用于python的teradata sql驱动程序实现了pep-249 python数据库api规范2.0


teradasql.threadsafety

整数常量2表示线程可以共享此模块,线程可以共享连接,但线程不能共享游标。


teradasql.paramstyle

字符串常量"qmark"表示准备好的SQL请求使用问号参数标记。

< A/>

模块异常

teradasql.error是其他异常的基类。

  • teradasql.interfaceerror针对与驱动程序相关的错误引发。尚未支持。
  • teradasql.databaseerror针对与数据库相关的错误引发。
    • teradasql.dataerror针对数据值错误(如被零除)引发。尚未支持。
    • teradasql.integrityerror是针对引用完整性冲突而引发的。尚未支持。
    • teradasql.operationerror针对与数据库操作相关的错误引发。
    • teradasql.programmingerror针对SQL对象存在错误和SQL语法错误引发。尚未支持。

< A/>

连接方法

.close()

关闭连接。


.commit()

提交当前事务。


.cursor()

为连接创建并返回一个新的光标对象。


.rollback()

回滚当前事务。

< A/>

光标属性

。排列大小

读/写属性,指定使用.fetchmany()方法一次获取的行数。默认为1表示一次提取一行。


。连接

只读属性,指示光标的父连接对象。


。说明

只读属性,由七个项序列组成,每个项序列描述一个结果集列,在执行SQL请求后可用。

  • 。description[][0]提供列名称。
  • 。说明[column][1]将列类型代码作为与下面列出的类型对象之一类似的对象提供。
  • 。description[column][2]提供以字符为单位的列显示大小。尚未实施。
  • 。description[column][3]以字节为单位提供列大小。
  • 。description[][4]提供列精度(如果适用),否则提供列精度。
  • 。description[][5]提供列比例(如果适用),否则为
  • .description[][6]提供列的可空性为

.rowcount

只读属性,指示从当前SQL语句返回或受其影响的行数。

< A/>

光标方法

.callproc(过程重命名参数值的可选顺序

调用由procedurename指定的存储过程。 提供第二个参数作为ininout参数值的序列,以将值绑定到sql请求中的问号参数标记。 不支持将参数值指定为映射。 返回由inout参数输出值(如果有)和任何动态结果集组成的结果集。

out此方法不支持参数。使用。execute调用具有out参数的存储过程。


.close()

关闭光标。


。执行(sqlrequest参数值的可选序列

执行SQL请求。 如果提供一系列参数值作为第二个参数,则这些值将绑定到SQL请求中的问号参数标记。不支持将参数值指定为映射。


.executemany(sqlrequest参数值序列的序列

将SQL请求作为一个对参数值批的迭代SQL请求执行。 参数值的批处理必须指定为序列。不支持将参数值指定为映射。


.fetchall()

获取当前结果集的所有剩余行。 返回列值序列。


.fetchmany(可选行数

获取当前结果集的下一系列行。 参数指定要提取的行数。如果未提供参数,则光标的.arraysize属性将确定要提取的行数。 返回列值序列或空序列,以指示所有行都已提取。


.fetchone()

获取当前结果集的下一行。 返回列值序列,或none以指示所有行都已提取。


.nextset()

前进到下一个结果集。 如果另一个结果集可用,则返回truenone以指示所有结果集都已获取。


.setinputsizes(类型排序的顺序

无效。


.setOutputSize(大小可选列索引

无效。

< A/>

键入对象

teradasql.binary

与光标的"描述"属性相比,将SQLblobbytevarbyte列标识为二进制数据类型。

.description[][1]==teradasql.binary


teradasql.datetime

将SQL日期时间时区时间时间戳时区时间戳列与光标的"描述"属性相比较时,作为日期/时间数据类型。

.description[][1]==teradasql.datetime


teradasql.number

与光标的描述属性相比,将SQLbigintbyteintdecimalfloatintegernumbersmallint列标识为数字数据类型。

.description[][1]==teradasql.number


teradasql.string

将SQLcharclobintervalperiodvarchar列与光标的"描述"属性相比较时识别为字符数据类型。

.description[][1]==teradasql.string

< A/>

转义语法

teradata sql driver for python接受teradata jdbc驱动程序提供的大部分jdbc转义子句。

日期和时间文本

在将SQL请求文本传输到数据库之前,日期和时间文字转义子句将替换为相应的SQL文字。

<表><广告>文字类型 格式 < /广告><正文>日期{d'yyyy-mm-dd'}时间{t'hh:mm:ss'}时间戳{ts'yyyy-mm-dd hh:mm:ss'}时间戳{ts'yyyy-mm-dd hh:mm:ss.f'}

对于时间戳文字转义子句,可以省略小数点和小数,或者在小数点后指定1到6位小数f

标量函数

在将SQL请求文本传输到数据库之前,标量函数转义子句将被相应的SQL表达式替换。

<表><广告>数值函数 返回 < /广告><正文>{fn abs(数字)}数字的绝对值
{fn acos(float)}以弧度表示的反余弦 {fn asin(浮点)}弧度表示的浮点数 {fn atan(浮点)}以弧度表示的反正切值 {fn atan2(yx)}弧切,以弧度表示,属于y/x{fn天花板(数字)}大于或等于数的最小整数{fn cos(浮点)}余弦浮点数弧度{fn cot(float)}浮点的余切弧度{fn度(数字)}角度in数值弧度{fn exp(浮点)}e提高到浮点的幂 {fn楼层(编号)}小于或等于数的最大整数{fn日志(float)}自然(基e)浮点的对数 代码>{fn log10(float)}以10为底的浮点对数 {fn mod(整数1整数2)}整数1的余数 {fn pi()}常数pi,约等于3.14159…{fn幂(整数)}数字提升为整数{fn弧度(数字)}弧度in数值{fn rand(种子)}一个随机浮点数,忽略0‰值lt;1和种子{fn round(数字地点)}数字四舍五入到个位置{fn符号(数字)}-1如果数字为负;0如果数字为0;1如果数字为正{fn sin(浮点)}正弦浮点弧度{fn sqrt(浮点)}浮点的平方根 {fn tan(浮点)}浮点的正切弧度{fn截断(数字位置)}数字截断为个位置<表><广告>字符串函数返回 < /广告><正文>{fn ascii(字符串)}字符串中第一个字符的ascii码 {fn char(代码)}带ascii代码的字符{fn字符长度(字符串)}字符串的字符长度 {fn字符长度(字符串)}字符串的字符长度 {fn concat(string1string2)}串接string1string2形成的字符串 {fn差异(string1string2)}一个从0到4的数字,表示基于它们的soundex代码的string1string2的语音相似性,这样返回值越大表示语音相似性越大;0表示不相似,4表示强相似性{fn插入(字符串1位置长度字符串2)}string2替换位置处字符串1长度字符段形成的字符串,从Teradata数据库15.0开始可用 {fn lcase(字符串)}字符串中的所有大写字符替换为相应的小写字符而形成的字符串{fn左(字符串计数)}最左边的计数字符串的字符数{fn长度(字符串)}字符串的字符长度 {fn定位(string1string2)}string1第一次出现的string2中定位,如果string2不包含string1{fn ltrim(字符串)}移除le形成的字符串从字符串读取空格 {fn八位字节长度(字符串)}字符串的八位字节长度 {fn位置(string1instring2)}string1第一次出现的string2中定位,如果string2不包含string1{fn重复(字符串计数)}通过重复stringcount次而形成的字符串,从Teradata数据库15.0开始提供 {fn替换(string1string2string3)}string1中的所有string2替换为string3{fn右(字符串计数)}最右边的count个字符,从Teradata数据库15.0开始提供 {fn rtrim(字符串)}通过从字符串中删除尾随空格而形成的字符串 {fn soundex(字符串)}字符串的soundex代码 {fn空格(计数)}count空格组成的字符串 {fn子字符串(字符串位置长度)}字符串的长度字符段位于位置{fn ucase(字符串)}字符串中的所有小写字符替换为其大写等效字符而形成的字符串<表><广告>系统功能 返回 < /广告><正文>{fn database()}当前默认数据库名称{fn ifnull(表达式)}表达式如果表达式不为空,或者如果表达式为空{fn user()}登录用户名,在设置代理用户之后,它可能与当前的授权用户名不同 <表><广告>时间/日期函数 返回 < /广告><正文>{fn curdate()}当前日期{fn current_date()}当前日期{fn current_time()}当前时间{fn current_timestamp()}当前日期和时间{fn curtime()}当前时间{fn月日(日期)}从1到31的整数,表示日期中的月份 {fn提取(年份从)}日期和/或时间的年份分量{fn提取(月起)}日期和/或时间的月份组成{fn提取(日起)}日期和/或时间的日分量{fn提取(小时从)}日期和/或时间的小时组成{fn提取(分钟从)}日期和/或时间的分钟分量{fn提取(从)}第二次日期和/或时间的组成部分{fn小时(时间)}从0到23的整数,表示时间的小时 {fn分钟(时间)}从0到59的整数,表示时间的分钟 {fn月(日期)}从1到12的整数,表示日期的月份 {fn now()}当前日期和时间{fn秒(时间)}从0到59的整数,表示时间的秒数 {fn时间戳添加(sql-tsi-year,计数时间戳)}通过将计数年添加到时间戳而形成的时间戳 {fn timestampadd(sql-tsi-u-month,计数时间戳)}count个月添加到timestamp{fn时间戳添加(SQL TSI日,计数时间戳)}通过将计数天添加到时间戳{fn timestampadd(sql-tsi-hour,计数时间戳)}通过将计数小时添加到时间戳{fn timestampadd(sql tsi u minute,计数时间戳)}通过将计数分钟添加到时间戳{fn timestampadd(sql_tsi_second,计数时间戳)}通过将计数秒添加到时间戳{fn timestampdiff(SQL年,时间戳1时间戳2)}时间戳2超过时间戳1的年数 {fn timestampdiff(sql-tsi-u-month,时间戳1时间戳2)}时间戳2超过时间戳1的月数 {fn timestampdiff(sql-tsi-u-day,时间戳1时间戳2)}时间戳2超过时间戳1的天数 {fn timestampdiff(每小时计算时间,时间戳1时间戳2)}时间戳2超过时间戳1的小时数 {fn timestampdiff(SQL时间间隔,时间戳1时间戳2)}时间戳2超过时间戳1的分钟数 {fn timestampdiff(SQL秒,时间戳1时间戳2)}时间戳2超过时间戳1的秒数 {fn年(日期)}年月日

转换函数

在将SQL请求文本传输到数据库之前,转换函数转义子句将被相应的SQL表达式替换。

<表><广告>转换函数 返回 < /广告><正文>{fn转换(,sql_bigint)}转换为sqlbigint{fn转换(,SQL二进制(大小)}转换为sql字节(大小{fn转换(,sql_char(大小)}转换为sqlchar(大小{fn转换(,sql_date)}转换为SQL日期{fn转换(,sql十进制(精度刻度)}转换为SQL十进制(精度刻度{fn转换(,sql双精度)}转换为SQL双精度,是浮点的同义词 {fn转换(,sql_float)}转换为sqlfloat{fn转换(,sql_integer)}转换为SQL整数{fn转换(,sql_longvarbinary)}转换为sqlvarbyte(64000){fn转换(,sql_longvarchar)}转换为sqllong varchar{fn转换(,sql数值)}转换为sql数字{fn转换(,sql_smallint)}转换为sqlsmallint{fn转换(,sql时间(比例)}转换为sql时间(比例{fn转换(,sql时间戳(缩放)}转换为sql时间戳(比例{fn转换(,sql tinyint)}转换为sqlbyteint{fn转换(,sql变量(大小)}转换为sqlvarbyte(大小{fn转换(,sql varchar(大小)}转换为sqlvarchar(大小

类似谓词转义字符

like谓词的模式参数中,字符%(百分比)和(下划线)用作通配符。 要在like谓词的模式参数中逐字解释特定的通配符,通配符前面必须有转义符,转义符必须在like谓词的转义子句中指示。

like谓词转义字符转义子句在SQL请求文本传输到数据库之前被相应的SQL子句替换。

{escape'转义字符'}

escape子句必须在它所应用的like谓词之后立即指定。

外部连接

在将SQL请求文本传输到数据库之前,外部联接转义子句将替换为相应的SQL子句。

{oj表名可选关联名左外联接表名可选关联名on联接条件}

{oj表名选项关联名右o外部联接表名选项关联名打开联接条件}

{oj表名可选关联名完全外部联接表名可选关联名on联接条件>>

存储过程调用

在将SQL请求文本传输到数据库之前,存储过程调用转义子句将替换为相应的SQL子句。

{调用过程重命名}

{调用过程重命名逗号分隔参数值…)}

本机SQL

当sql请求包含本机sql escape子句时,sql请求文本中的所有escape子句都将被替换,修改后的sql请求文本将作为包含一行和一个varchar列的结果集返回给应用程序。不会将sql请求文本传输到数据库,也不会执行sql请求。native sql escape子句模拟jdbc apiconnection.nativesql方法的功能。

{fn teradata\u nativesql}

连接功能

下表列出了与本机sql escape子句一起使用的连接函数escape子句{fn teradata\u nativesql}

这些函数提供有关连接的信息,或控制连接的行为。 提供信息的函数返回本地缓存的信息,并避免往返数据库。 在将SQL请求文本传输到数据库之前,连接函数转义子句将被返回的信息替换。

<表><广告>连接功能 返回 < /广告><正文>{fn teradata\u amp\u count}Teradata数据库系统的安培数{fn teradata_database_version}Teradata数据库的版本号{fn teradata_driver_version}用于python的teradata sql驱动程序的版本号{fn teradata\u getloglevel}当前日志级别{fn teradata登录序列号}会话的登录序列号(如果可用){fn teradata_provide(配置响应)}以json格式配置响应包内容{fn teradata_provide(连接id)}进程中连接的唯一标识符{fn teradata_provide(默认连接)}false表示这不是存储过程默认连接 {fn teradata_provide(主机id)}会话的主机ID{fn teradata_provide(java_charset_name)}utf8{fn teradata_provide(lob_支持)}truefalse表示此连接的LOB支持 {fn teradata_provide(本地地址)}连接的TCP套接字的本地地址{fn teradata_provide(本地端口)}连接的TCP套接字的本地端口{fn teradata_provide(原始主机名)}原始指定的Teradata数据库主机名{fn teradata_provide(redrive_active)}truefalse指示此连接是否已重新驱动 {fn teradata_provide(远程地址)}连接的Teradata数据库节点的主机名(如果可用)和IP地址{fn teradata_provide(远程端口)}tera的tcp端口号数据数据库{fn teradata_provide(rnp_active)}truefalse指示此连接是否激活了可恢复的网络协议 {fn teradata_provide(会话字符集代码)}会话字符集代码191{fn teradata_provide(session_charset_name)}会话字符集名称utf8{fn teradata_provide(sip_支持)}truefalse表示此连接的语句信息包支持 {fn teradata_provide(事务模式)}会话的事务模式,ansitera{fn teradata_session_number}会话编号{fn teradata_setloglevel(loglevel)}空字符串,并更改连接的日志级别

请求范围函数

下表列出了用于光标的请求范围函数转义子句。execute。executemany方法。

这些函数控制相应游标的行为,并且在范围上限制为在其中指定它们的特定sql请求。 在将SQL请求文本传输到数据库之前,将删除请求范围函数转义子句。

<表><广告>请求作用域函数 效果< /广告><正文>{fn teradata_failfast}拒绝("Fail Fast")此SQL请求,而不是由工作负载管理规则或限制延迟{fn teradata伪结果集}每个真实结果集前面都有一个包含语句元数据的假结果集{fn teradata_lobselect(选项)}使用lob select选项执行sql请求s(假脱机范围的lob定位器)、t(事务范围的lob定位器)或默认的i(内联具体化的lob值){fn teradata_provide(请求范围lob支持关闭)}关闭此SQL请求的LOB支持{fn teradata_provide(请求范围刷新rsmd)}使用默认的请求处理选项执行SQL请求 {fn teradata_provide(请求范围SIP支持关闭)}关闭此SQL请求的StatementInfoParcel支持{fn teradata_rpo(请求处理选项)}使用requestprocessingoptions(prepare)、e(execute)或默认的b(both)执行SQL请求 {fn teradata_untrusted}将SQL请求标记为不受信任;尚未实现

< A/>

更改日志

16.20.0.47-2019年8月27日

  • GOSQL-40跳过执行空SQL请求文本
  • pydbapi-67 teradasql.connect json连接字符串可选

16.20.0.46-2019年8月16日

  • gosql-39与kerberos的cop发现互操作

16.20.0.45-2019年8月12日

  • GOSQL-38时间戳前缀日志消息

16.20.0.44-2019年8月7日

  • gosql-4支持cop发现
  • Pydbapi-36警察发现

16.20.0.43-2019年7月29日

  • GOSQL-18自动提交
  • pydbapi-61提交和回滚方法

16.20.0.42-2019年6月7日

  • pydbapi-65示例程序batchinsert.py

16.20.0.41-2019年2月14日

  • PYDBapi-57 fetchmany可能返回"rows are closed"而不是空结果集

16.20.0.40-2019年2月8日

  • GOSQL-11 JWT认证方法
  • gosql-16 tmode连接参数
  • GOSQL-17提交和回滚函数

16.20.0.39-2018年10月26日

  • 示例程序storedproc.py

16.20.0.38-2018年10月25日

  • pydbapi-56存储过程动态结果集

16.20.0.37-2018年10月22日

  • 文档更改

16.20.0.36-2018年10月22日

  • GOSQL-5创建/替换过程MultiTSR协议

16.20.0.35-2018年10月22日

  • GOSQL-10存储密码保护
  • pydbapi-28静态安全密码
  • pydbapi-47端口示例程序tjencryptpassword to python

16.20.0.34-2018年10月15日

  • 修复示例程序tjencryptpassword.py

16.20.0.33-2018年10月12日

  • 安装依赖项pycryptodome

16.20.0.32-2018年9月19日

  • 示例程序loadcsvfile.pymetadatafromprepare.py
  • 转义函数teradata伪结果集

16.20.0.31-2018年9月19日

  • 添加了函数跟踪

16.20.0.30-2018年9月14日

  • PYDBAPI-12连接
  • Pydbapi-33熊猫库互操作性
  • 移动的示例目录

16.20.0.29-2018年9月14日

  • 示例程序

16.20.0.28-2018年9月13日

  • 文档更改

16.20.0.27-2018年9月12日

  • 文档更改

16.20.0.26-2018年9月11日

  • Pydbapi-8文档
  • PYDBAPI-9用户指南内容

16.20.0.25-2018年9月10日

  • 文档更改

16.20.0.24-2018年9月6日

  • pydbapi-54实现游标行计数属性
  • pydbapi-55改进了对python数据类型的支持

16.20.0.23-2018年8月31日

  • KeepResponse仅适用于LOB定位程序

16.20.0.22-2018年8月30日

  • 固定数值

16.20.0.21-2018年8月29日

  • 关闭孤立行

16.20.0.20-2018年8月28日

  • 十进制和日期时间值

16.20.0.19-2018年8月22日

  • TimeDelta绑定值

16.20.0.18-2018年8月21日

  • datetime.datetime绑定值

16.20.0.17-2018年8月20日

  • 错误中的版本号

16.20.0.16-2018年8月17日

  • SLES 11 SP1兼容性

16.20.0.15-2018年8月17日

  • 文档更改

16.20.0.14-2018年8月10日

  • 文档更改

16.20.0.13-2018年8月9日

  • 文档更改

16.20.0.12-2018年8月9日

  • PYDBAPI-10用户指南交付和可视性
  • PYDBAPI-11可搜索性

16.20.0.11-2018年8月8日

  • 文档更改

16.20.0.10-2018年8月8日

  • 文档更改

16.20.0.9-2018年8月7日

  • 在teradasql目录中安装文档

16.20.0.8-2018年8月7日

  • GOSQL-7 TDNEGO认证方法
  • pydbapi-42 teradata登录机制-tdnego

16.20.0.7-2018年7月30日

  • GOSQL-8支持参数标记批插入
  • pydbapi-45参数化批处理插入器使用executemany的操作

16.20.0.6-2018年7月25日

  • 手柄图的螺纹安全性

16.20.0.5-2018年7月25日

  • 删除ATEXIT

16.20.0.4-2018年7月23日

  • pydbapi-4提供python驱动程序许可文件

16.20.0.3-2018年7月19日

  • pydbapi-46接受bytes、int、float、str的子类作为绑定值

16.20.0.2-2018年7月19日

  • 包属性更改

16.20.0.1-2018年7月18日

  • 版本号更改

16.20.0.0-2018年7月18日

  • GOSQL-1加密登录
  • GOSQL-2 LDAP和kerberos身份验证
  • GOSQL-3支持1MB行
  • GOSQL-6引出文件协议
  • Pydbapi-1分布
  • pydbapi-5 cursor.execute方法返回游标
  • pydbapi-6安装和部署
  • python驱动程序包的pydbapi-7pip安装
  • pydbapi-13操作系统平台
  • pydbapi-14驱动程序必须可供windows操作系统用户使用
  • pydbapi-15驱动程序必须可供osx(mac)用户使用
  • pydbapi-16驱动程序必须可供linux操作系统用户使用
  • pydbapi-17 python语言版本
  • pydbapi-18 python语言3.4版
  • PYDBAPI-19分布
  • Pydbapi-23 Teradata分析平台互操作性/支持
  • pydbapi-24与teradata数据库16.10、16.20一起工作
  • pydbapi-26 teradata登录机制-kerberos
  • pydbapi-32可从pypi.org下载
  • pydbapi-40teradata登录机制-ldap
  • pydbapi-41 teradata登录机制-td2
  • pydbapi-43参数化单行插入
  • pydbapi-44参数化查询

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javai是JAXB的新手。如何将两个具有不同名称空间的不同xml合并为一个具有根元素的xml并将其解组?   JDO中的java应该是可传递的DefaultFetchGroup吗   java服务器配置问题   java在理解JList时遇到困难   java何时将RequestContextFilter用于Jersey?   java从数据库中读取文本文件。jar文件   Java正则表达式,仅适用于不包括零的正数   爪哇番石榴。类路径中的jar   JavaEE:关于设计的问题   java GUI,在面板中排列按钮   java Android为什么使用接口被认为是活动和片段之间通信的最佳实践?   java如何获取wicket图像的url以在开放图元标记中使用它   从Java字节[]>Base64>Javascript数组缓冲>Base64>byte[]   java正则表达式帮助字符串JWE766。1.pdf格式摘录766   java Hibernate,JPA忽略@Formula