查询在查询浏览器中工作正常,但在python代码中却无法正常工作

Noobie

我有一个Teradata sql查询,该查询在Teradata Studio Express的查询浏览器中运行良好,但是当我尝试在python代码中运行相同的查询时,出现以下错误:

(3706,“ [42000] [Teradata] [ODBC Teradata驱动程序] Teradata DatabaseSyntax错误:预期介于'('和'('。”之间)

我的查询:

td_query = """select 
hash_md5((XMLAGG(TRIM(h_age) ORDER BY h_age ASC) (VARCHAR(100))) )hash_age,
hash_md5((XMLAGG(TRIM(h_marks) ORDER BY h_age ASC )(VARCHAR(100)))) hash_marks,
hash_md5((XMLAGG(TRIM(h_id) ORDER BY h_age ASC )(VARCHAR(100)))) hash_id,
hash_md5((XMLAGG(TRIM(h_score) ORDER BY h_age ASC )(VARCHAR(100))))hash_score,
hash_md5((XMLAGG(TRIM(h_name) ORDER BY h_age ASC )(VARCHAR(100))))hash_name,
hash_md5((XMLAGG(TRIM(h_entry) ORDER BY h_entry ASC )(VARCHAR(100))))hash_entry,
SUM(Aggrownum) sum_val,
COUNT(Aggrownum) count_val,
sum_val/count_val row_num
from 
(
Select 
hash_md5(CAST(age AS VARCHAR(100)))h_age ,
hash_md5(CAST(marks AS VARCHAR(100)))h_marks,
hash_md5(CAST(id AS VARCHAR(100)))h_id,
hash_md5(CAST(score AS VARCHAR(100)))h_score,
hash_md5(CAST(f_name AS VARCHAR(100)))h_name,
hash_md5(CAST(entry AS FORMAT 'yyyy-mm-ddbhh:mi:ss') (char (20)))h_entry,
row_number() over (partition by dob order by  age asc) rno,round(rno/500.0) Aggrownum
from tdwm.student_2
) A group by Aggrownum ORDER BY row_num;
"""

并在python文件中将其运行为:

df_teradata = pd.read_sql(td_query, connect)            

哪里connecttd.UdaExec对象,上面的代码是其他简单的查询,如工作的罚款select * from tdwm.student_2

我也尝试过最小化版本的同一查询,我得到相同的错误。

这是我使用的代码td_query

import pandas as pd
import teradata as td

td_host, td_username, td_passwd, td_dbname = '10.20.181.55', 'dbac', 'dbac', 'tdwm'

udaExec = td.UdaExec(appName="test", version="1.0", logConsole=False)
with udaExec.connect(method="odbc",system=td_host, username=td_username, port=1025,
                            password=td_passwd, driver="Teradata Database ODBC Driver 16.20") as connect:
    df_teradata = pd.read_sql(td_query, connect)
黑胡子

我遇到了类似的问题。

您的查询存在的问题是它包含hash_md5未知的函数,这就是teradata python module错误的原因。

解:

在该函数之前添加数据库名称(就像在表名称之前添加数据库名称一样tdwm.student_2)。因此,您的新查询将是:

select 
 tdwm.hash_md5((XMLAGG(TRIM(h_age) ORDER BY h_age ASC) (VARCHAR(100))) )hash_age,
 tdwm.hash_md5((XMLAGG(TRIM(h_marks) ORDER BY h_age ASC )(VARCHAR(100)))) hash_marks,
 tdwm.hash_md5((XMLAGG(TRIM(h_id) ORDER BY h_age ASC )(VARCHAR(100)))) hash_id,
 tdwm.hash_md5((XMLAGG(TRIM(h_score) ORDER BY h_age ASC )(VARCHAR(100))))hash_score,
 tdwm.hash_md5((XMLAGG(TRIM(h_name) ORDER BY h_age ASC )(VARCHAR(100))))hash_name,
 tdwm.hash_md5((XMLAGG(TRIM(h_entry) ORDER BY h_entry ASC )(VARCHAR(100))))hash_entry,
 SUM(Aggrownum) sum_val,
 COUNT(Aggrownum) count_val,
 sum_val/count_val row_num
 from 
 (
 Select 
  tdwm.hash_md5(CAST(age AS VARCHAR(100)))h_age ,
  tdwm.hash_md5(CAST(marks AS VARCHAR(100)))h_marks,
  tdwm.hash_md5(CAST(id AS VARCHAR(100)))h_id,
  tdwm.hash_md5(CAST(score AS VARCHAR(100)))h_score,
  tdwm.hash_md5(CAST(f_name AS VARCHAR(100)))h_name,
  tdwm.hash_md5(CAST(entry AS FORMAT 'yyyy-mm-ddbhh:mi:ss') (char (20)))h_entry,
 row_number() over (partition by dob order by  age asc) rno,round(rno/500.0) Aggrownum
 from tdwm.student_2
 ) A group by Aggrownum ORDER BY row_num;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

查询在浏览器中工作正常,但在CLI中失败

嵌套查询无法在iOS SDK中使用,但在环回浏览器中可以正常工作

MPDF无法在谷歌浏览器中工作,但在Firefox中可以正常工作

URL在浏览器或wget中工作正常,但在Python或cURL中为空

在Safari浏览器中,scrollIntoView无法正常工作

FPDF在某些浏览器中无法正常工作

代码在 Safari 和响应式浏览器中无法正常工作

jQuery代码在jsfiddle中正常工作,但即使在$(window).load(function())中也无法在浏览器中工作

查询在sqlite db浏览器中工作,但在android中不工作

我正在使用复选框chk.jpg作为图像,它在Google Chrome浏览器中工作正常,但在Mozilla Firefox中无法正常工作吗?

Android Studio 中的 FileNotFoundException,但在浏览器中工作正常

SCSS 中的 Flexbox 在 Firefox 上正常工作,但在其他浏览器(例如 Chrome、Edge 等)上无法正常工作

在原则查询构建器中实施联接无法正常工作

AND“无法正常工作”在MySQL查询中

PDO中的LIKE查询无法正常工作

PHP中的MySQL查询无法正常工作

Android中的SQLite查询无法正常工作

使用 URL 下载时出现 403 错误,但在浏览器中工作正常

Xampp正常启动,但是在浏览器中的localhost无法正常工作

谷歌浏览器无法正常工作

Laravel 查询构建器未获取任何响应,但在 MySql 中相同的查询工作正常

在Python中执行MySQL查询无法正常工作

html5视频代码自动加载无法正常工作,如何在Chrome或任何浏览器中自动加载

Xdebug with PhpStorm 在 CLI 中工作正常,而不是从浏览器

nodeJS:无法在浏览器中打开获取响应-说页面无法正常工作

UITableView在模拟器中工作正常,但在我的物理设备中却无法正常工作

javascript“ this”关键字在浏览器中可以正常工作,但在node.js中却不能正常工作

试图通过Tor或VPN伪造Web浏览器中的位置,但无法正常工作

jQuery API:.ajaxStart()在Chrome浏览器中似乎无法正常工作