使用vertica_python驱动程序以编程方式获取列长度

时间:2016-11-29 15:26:21

标签: python sql vertica

是否可以通过vertica_python运行\d schema.table_name;之类的命令?我遇到以下错误,表明它不喜欢前导反斜杠:

vertica_python.errors.VerticaSyntaxError: Severity: ERROR, Message: Syntax error at or near "\", Sqlstate: 42601, Position: 1, Routine: base_yyerror, File: /scratch_a/release/svrtar9988/vbuild/vertica/Parser/scan.l, Line: 1043, SQL: '\\d schema.table_name;'

我本质上是想在程序中获取几个VARCHAR列的长度。我总是可以将命令放在一个文件中,运行vertica -f my_file > out_file并解析out_file但我正在寻找更好的方法。

1 个答案:

答案 0 :(得分:0)

只需对系统视图执行查询(active contours)。类似的东西:

select *
from columns
where table_schema = 'MYSCHEMA'
and   table_name = 'MYTABLE'
order by column_id

\dvsql命令,而不是服务器端命令。

使用vertica_python后的另一种可能性是在执行查询后检查光标中的字段。如果您已经有结果集并想知道数据类型,则非常有用。如果你已经有了结果,我可能只会使用这种方法。

为此,您可以查看cursor.description

应该有元素:

name
table_oid
attribute_number
data_type_oid
data_type_size
type_modifier
format_code