我有一个像
select * from log where concat_ws('-',year,month,day) between 2017-09-13 and 2017-09-19
这是错误的,因为 2017-09-13 和 2017-09-19 没有被 '' 包围。
在直线中,它会导致错误消息,如
错误:编译语句时出错:失败:ParseException 行 2:0 在 ']' 附近的 'select' 处缺少 EOF(状态 = 42000,代码 = 40000)
但在 PyHive 中,空结果 [] 正常。顺便说一句,我通过 sqlalchemy 使用它。
我尝试在 create_engine() 函数和日志记录中使用 echo=True,但两者都无法输出错误消息。
from sqlalchemy.engine import create_engine
from pyhive import hive
import logging
logging.basicConfig()
logging.getLogger('sqlalchemy.engine').setLevel(logging.DEBUG)
sql = "select * from log where concat_ws('-',year,month,day) between 2017-09-13 and 2017-09-19"
db = create_engine(
'hive://user:pass@ip:port/test',
connect_args={
'auth': 'LDAP',
'configuration': {
'mapreduce.job.queuename': 'queue'
}
},
echo=True
)
resultProxy=db.execute(sql)
data = resultProxy.fetchall()
2017-09-20 12:17:22,904 INFO sqlalchemy.engine.base.Engine select * from log where concat_ws('-',year,month,day) 在 2017-09-13 和 2017-09-19 之间
INFO:sqlalchemy.engine.base.Engine:select * from log where concat_ws('-',year,month,day) 在 2017-09-13 和 2017-09-19 之间
2017-09-20 12:17:22,905 信息 sqlalchemy.engine.base.Engine {}
信息:sqlalchemy.engine.base.Engine:{}
所以想知道有没有办法得到服务器端的错误,调试起来会很方便。