cur.execute('select * from admin.summary where NUMBER = "C123456"'
В SQL двойные кавычки используются для имен идентификаторов базы данных (таблиц и столбцов), а не для строковых литералов.Итак, компилятор Oracle ищет столбец с именем C123456
.
cur.execute('select * from admin.summary where NUMBER = 'C1012445'')
Ваша строка ограничена одинарными кавычками, поэтому она заканчивается после =
и интерпретатор Python не знает, что делать с C123456
.
Попробуйте экранировать кавычки следующим образом:
cur.execute('select * from admin.summary where NUMBER = ''C1012445'' ')
Как указывает @ChristopherJones, NUMBER
является зарезервированным словом и не может использоваться в качестве имени в Oracle.Я предполагал, что опубликованный код был редакцией, но если кто-то был настолько глуп, чтобы пробиться через такое имя столбца, он должен был сделать это, используя двойные кавычки.В этом случае все последующие ссылки на столбец также должны быть экранированы двойными кавычками:
cur.execute('select * from admin.summary where "NUMBER" = ''C1012445'' ')