Получить ошибку при описании таблицы в векторе, используя модуль python ingresdbi
Я использую входной модуль Python для связи с векторной базой данных. Для описания таблицы я использую код ниже:
import ingresdbi
local_db = ingresdbi.connect(database ='x',uid ='y',driver ='z',pwd ='p')
local_db_cursor = local_db.cursor()
local_db_cursor.execute('help tran_applog ; ' )
Я получаю эту ошибку:
Syntax error. Last symbol read was: 'help'."
Решения будут оценены. Спасибо
2 ответа
Проблема, с которой вы столкнулись, заключается в том, что "помощь" не является реальным оператором SQL, понятным для сервера СУБД. Это действительно команда мониторинга терминала, которая преобразуется в некоторые запросы к системным каталогам под обложками.
Альтернатива немного зависит от того, что вы пытаетесь получить из "таблицы описаний". Системные каталоги, относящиеся к информации о таблицах и столбцах, представляют собой iitables и iicolumns, и вы можете сделать выбор против них. Проверьте документацию или эксперимент.
В качестве альтернативы, возможно, имеется дескриптор строки, который вы можете получить от ingresdbi, см. Пример здесь http://community.actian.com/wiki/Python_Row_Description
НТН
Я считаю, что вы должны сделать это, как в любом другом сценарии оболочки: echo "help tran_applog;" | sql mydatabase
Причина: "HELP" не является стандартным оператором SQL.
По предложению PaulM, лучший способ получить метаданные о таблицах - это запросить системные каталоги (iitables, iicolumns, iirelation и т. Д.).
Начните с чего-то вроде:
SELECT C.column_name, C.column_datatype
FROM iitables T, iicolumns C
WHERE T.table_name = C.table_name
AND T.table_name = 'tran_applog';\g