如何禁用Teradata UdaExec自动日志及解决teradatasql安装pip报错
我来帮你搞定这两个Teradata相关的问题,亲测有效:
一、屏蔽UdaExec自动日志,仅保留自定义logger日志
你遇到的情况是UdaExec会自动输出像"Connection successful"这类日志,想只保留自己写的logger.info("Data loading into Teradata Successfull")。这是因为UdaExec有自己的专属logger实例,哪怕你初始化时设了configureLogging=False,它默认的日志级别还是INFO,所以会自动输出那些连接日志。
解决方法很简单,手动把UdaExec的logger级别调高,让它只输出警告及以上的日志,这样自动的INFO日志就会被屏蔽掉:
import teradata import logging # 初始化UdaExec,保持configureLogging=False关闭自动日志配置 udaExec = teradata.UdaExec( appName="appname", version="1.0", logConsole=False, configureLogging=False ) # 获取UdaExec的专属logger,把级别设为WARNING,屏蔽INFO级别的自动日志 teradata_uda_logger = logging.getLogger('teradata.udaexec') teradata_uda_logger.setLevel(logging.WARNING) # 配置你自己的logger,确保自定义日志正常输出 logger = logging.getLogger() logger.setLevel(logging.INFO) # 给自定义logger添加控制台处理器(如果之前没配置的话) console_handler = logging.StreamHandler() log_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') console_handler.setFormatter(log_formatter) logger.addHandler(console_handler) # 测试自定义日志,只会输出这一条 logger.info("Data loading into Teradata Successfull")
如果用udaexec.ini配置文件的话,也可以在[CONFIG]里加上logLevel=WARNING,不过代码里的设置优先级更高,建议直接在代码里配置更稳妥。
二、解决teradatasql安装失败(pip版本过低、找不到匹配版本)的问题
pip 9.0.1确实是比较老的版本了,很多新的Python包已经不再兼容这么低的pip版本,所以首先得升级pip:
1. 升级pip到最新版本
执行以下命令(根据你的Python环境选对应命令):
- 常规Python环境:
pip install --upgrade pip
- Python3环境(避免和Python2冲突):
pip3 install --upgrade pip
- 没有管理员权限的话,加
--user参数安装到用户目录:
pip install --upgrade pip --user
2. 升级后安装teradatasql
pip升级完成后,再执行安装命令:
pip install teradatasql
如果还是提示找不到匹配版本,大概率是你的Python版本太老(比如Python2.7或3.5及以下)。teradatasql现在主要支持Python3.6+,如果不想升级Python,可以指定兼容旧版本的teradatasql版本安装,比如针对Python2.7:
pip install teradatasql==16.20.0.46
不过更推荐的是升级Python到3.6及以上版本,这样能安装最新的teradatasql,获得更好的兼容性和功能。
内容的提问来源于stack exchange,提问作者Ashu

