0

基于https://pygresql.readthedocs.io/en/latest/contents/pg/adaptation.html

sql = "SELECT * FROM user_table WHERE login = %s AND passwd = %s"

db.query_formatted(sql, (login, passwd)).getresult()[0]

我重用了这段代码来尝试使用库 SQL 替换,如下例所示:

import pg

pg.DB(*credentials)

sql = "select %s, %s from my.table limit 10"
c.query_formatted(sql, ("id", "event_time")).getresult()[0]

并尝试查询 Redshift 表。

不幸的是,我收到此错误消息

{InternalError}ERROR:  Assert
DETAIL:  
  -----------------------------------------------
  error:  Assert
  code:      1000
  context:   false - Invalid type: 705
  query:     9876543
  location:  tbl_trans.hpp:923
  process:   padbmaster [pid=6543]
  -----------------------------------------------

我真的不知道如何解释。

我还尝试与另一个客户进行查询

select *
from stl_error
where pid = 6543;

但我得到的是:

userid,process,recordtime,pid,errcode,file,linenum,context,error
100,padbmaster,2021-03-01 12:00:00,6543,1000,/home/ec2-user/padb/src/sys/tbl_trans.hpp,923,Assert,false - Invalid type: 705                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

有人知道这里有什么问题吗?还有什么建议吗?

4

1 回答 1

0

这里有两个问题:

  1. PyGreSQL 不正式支持 Redshift。虽然它可能有效,但 PyGreSQL 仅适用于 PostgreSQL。它不包含任何针对 Redshift 的特殊规定,仅使用 PostgreSQL 进行测试(当前版本需要 PostgreSQL 9 或更高版本)。

  2. 选择列表必须指定为指定列的文字:select id, event_time from ...查询参数仅用于将值插入查询。

于 2021-04-01T07:44:38.440 回答