Форум сайта python.su
День добрый. Возникла следующая проблема. Пытаюсь выполнить следующий запрос
cur.execute('SELECT Count(DataFull.Status) AS [Count] FROM DataFull HAVING (((DataFull.Status)="НеОбслужен"));')
Traceback (most recent call last):
File “C:\Users\mfc-uss\Desktop\Новая папка (2)\main.py”, line 30, in sett_onClick
cur.execute('SELECT Count(DataFull.Status) AS FROM DataFull HAVING DataFull.Status=НеОбслужен;')
File “C:\Users\mfc-uss\Desktop\Новая папка (2)\pypyodbc.py”, line 1605, in execute
self.execdirect(query_string)
File “C:\Users\mfc-uss\Desktop\Новая папка (2)\pypyodbc.py”, line 1631, in execdirect
check_success(self, ret)
File “C:\Users\mfc-uss\Desktop\Новая папка (2)\pypyodbc.py”, line 986, in check_success
ctrl_err(SQL_HANDLE_STMT, ODBC_obj.stmt_h, ret, ODBC_obj.ansi)
File “C:\Users\mfc-uss\Desktop\Новая папка (2)\pypyodbc.py”, line 966, in ctrl_err
raise DatabaseError(state,err_text)
pypyodbc.DatabaseError: ('07002', ' Слишком мало параметров. Требуется 1.')
Офлайн
А если руками - запрос отрабатывает?
Офлайн
Если выполнить данный запрос в Accese то работает. В python не хочет выполнятся.
Офлайн
А так?
cur.execute("SELECT Count(DataFull.Status) AS [Count] FROM DataFull HAVING (((DataFull.Status)='НеОбслужен'));")
Офлайн
может быть
SELECT Count(DataFull.Status) AS [Count] FROM DataFull WHERE DataFull.Status="НеОбслужен");
Офлайн
PooHДело не в кодировке. Так как другие запросы работают. Версия питона 3.4.
Кстати, кодировка в начале файла указана? Какая версия питона? Если 2.x то сделайте строку уникодной(“u” перед ковычками)
ShamanПопробовать могу только завтра.
SELECT Count(DataFull.Status) AS FROM DataFull WHERE DataFull.Status=“НеОбслужен”);
Офлайн
art777в вариантах
И еще вопрос: надо ли экранировать кавычки или питон и так сьест?
' "text" ' " 'text' "
Офлайн
art777Вам долго “#encode: xxx” попробовать прописать? Судя по ошибке - запрос доходит до базы, и уже там неправильно интерпретируется, один из символов воспринимается как плейсхолдер. У меня два предположения - виноват какой-то из русских символов(в других запросах возможно не попадался этот символ) и еще мне не нравятся двойные ковычки вокруг строки, насколько я знаю, в стандарте sql только одинарные.
Дело не в кодировке. Так как другие запросы работают. Версия питона 3.4.
Офлайн
Проблема и вправду оказалась с кавычками. Сделал во так:
cur.execute('SELECT Count(DataFull.Status) AS [Count] FROM DataFull WHERE DataFull.Status=\'НеОбслужен\';')
Офлайн
art777Не надо. Я в своем самом первом ответе привел запрос - строка в одинарных кавычках, а сам запрос в двойных.
Все таки оказалось надо экранировать.
Офлайн