Pyodbc DataError 22003 при выборе данных из базы данных NAV
Я использую Pyodbc для выбора данных из базы данных Dynamics NAV моей компании, и до сих пор она отлично работала, используя строку выбора, созданную запросом Excel/Microsoft, но теперь я хочу использовать предложение WHERE только для выбора информации от конкретного поставщика. Поставщик НЕТ - это их номер, хранящийся в виде строки в столбце «Купить у поставщика №_», и когда я пытаюсь использовать это, у меня возникает проблема с запросом SQL. Упрощенная версия заявления выглядит так:
'SELECT "Companyname A_S$Purchase Line"."Planned Receipt Date", "Companyname A_S$Purchase Line"."Vendor Item NO_", "Companyname A_S$Purchase Line".No_ FROM COMPANYDB.dbo."Companyname A_S$Purchase Line" "Companyname A_S$Purchase Line" WHERE ("Companyname A_S$Purchase Line"."Buy-from Vendor No_"="96100961") ORDER BY "Companyname A_S$Purchase Line"."Order Date" DESC'
Это приводит к следующей ошибке:
pyodbc.ProgrammingError: ('42S22', "[42S22] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name '96100961'. (207) (SQLExecDirectW)")
Если я заменю числовую строку на %s и вставлю число, используя одинарные кавычки, я получу ошибку о преобразовании varchar в int, потому что один из NO поставщика выше, чем предел int.
Если я попытаюсь использовать предложение where в столбце данных INT, оно сработает, поэтому я предполагаю, что проблема связана с кавычками или двойными кавычками?
Любая помощь приветствуется.
С уважением Мартин
1 ответ
Решил это:
'SELECT "Companyname A_S$Purchase Line"."Planned Receipt Date", "Companyname A_S$Purchase Line"."Vendor Item NO_", "Companyname A_S$Purchase Line".No_ FROM COMPANYDB.dbo."Companyname A_S$Purchase Line" "Companyname A_S$Purchase Line" WHERE ("Companyname A_S$Purchase Line"."Buy-from Vendor No_"='+"'96100961'"+') ORDER BY "Companyname A_S$Purchase Line"."Order Date" DESC'
Иногда мне просто нужно немного подумать.