Я видел несколько вопросов об ошибке «Слишком мало параметров» , но не нашел такого, который вполне соответствует моей ситуации.
Упрощенный код:
db.cursor.execute ('''SELECT [PT_NUMBER] FROM [newtest1];''')
newtest1
- это сохраненный запрос MS Access, содержащий подзапрос с жестко закодированным where
предложением:
SELECT table1.PT_NUMBER, table1.ID
FROM table1
WHERE (table1.ID In (select ID from table2 where field1 = "TESTVALUE"));
Моя ошибка:
pyodb c .Error : ('07002', '[07002] [Microsoft] [ODB C Драйвер Microsoft Access] Слишком мало параметров. Ожидаемый 1. (-3010) (SQLExecDirectW) ')
Если я вместо этого использую тот же код для выбора из запроса, который не содержит подзапроса с жестко закодированным предложением where, я не получаю ошибки:
db.cursor.execute ('''SELECT [PT_NUMBER] FROM [newtest2];''')
С newtest2
, определенным как:
SELECT table1.PT_NUMBER, table1.ID
FROM table1
WHERE (table1.ID In (select ID from table2));
Так что, похоже, это не самая распространенная проблема опечатки имени столбца или проблема передачи в параметр, а не использование ?
, по крайней мере, не из кода.
Кажется, что жестко заданный WHERE
вызывает проблему, даже если он находится в запросе Access, а не в коде python.
Возможно ли SELECT
из запроса Access с подзапросом с жестко закодированным предложением WHERE
таким образом, с pyodb c?
Любые указатели будут высоко оценены.