Столбец ( ) не найден ни в одной таблице запроса (или SLV не определен). SQLCODE=-217

#python #sql #pandas #dataframe #db2

Вопрос:

Я читаю таблицу примерно так:

 query = (
"select mandant,posnr,systemdat,
"lieferbedingung,loeschhafen,bereich," 
"nrkreis_nr from eakopf_t where posnr[10,10] = " " and posnr[1,2] not in ("99","RE","UB") and mandant <> 999;"
)

df = pd.read_sql(query, engine.connect())
 

Но я получаю эту ошибку:

 ibm_db_dbi::DatabaseError: SQLNumResultCols failed: [IBM][CLI Driver][IDS/UNIX64] Column ( ) not found in any table in the query (or SLV is undefined). SQLCODE=-217
[SQL: select mandant,posnr,systemdat,lieferbedingung,loeschhafen,bereich,nrkreis_nr from eakopf_t where posnr[10,10] = " " and posnr[1,2] not in ("99","RE","UB") and mandant <> 999;]
 

Можно ли продолжить отладку, которая является точной причиной проблемы? Потому что в противном случае все имена col, по-видимому, существуют в наборе данных.

Комментарии:

1. Раздражает, что вам не дано имя столбца; оно должно быть указано в круглых скобках. Может показаться, что вы неправильно написали название какого-либо столбца. Вы не используете никакой SLV (локальная переменная оператора).

2. Одна из возможностей заключается в том, что вы используете DELIMIDENT set в своей среде, и в этом случае ” “ он будет интерпретироваться как имя столбца, состоящее из одного пустого поля. Несмотря на то, что существуют и другие строки в двойных кавычках, единственным пробелом является первая, и поэтому о ней будет сообщено. Попробуйте использовать встроенные одинарные кавычки вокруг строк.

3. Должно ли это быть помечено как informix вместо db2?

Ответ №1:

Это своего рода предположение, потому что я не вижу вашей базы данных, но эта строка:

 posnr[10,10] = " "
 

для меня это подозрительно. По крайней мере, в Postgres двойные кавычки указывают имена столбцов, что может привести к подобной ошибке. Я бы предложил заменить любые двойные кавычки, предназначенные для представления строк, одинарными кавычками и повторить попытку. т. Е.)

 posnr[10,10] = ' '
 

Комментарии:

1. Informix допускает одинарные или двойные кавычки вокруг строк, если DELIMIDENT переменная среды не задана. Ваш совет использовать одинарные кавычки разумен, но использование двойных кавычек (вероятно) на этот раз не является причиной проблем.