Найти - Пользователи
Полная версия: Проблема с запросом.
Начало » Базы данных » Проблема с запросом.
1 2
art777
День добрый. Возникла следующая проблема. Пытаюсь выполнить следующий запрос

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.')

Для подключения к базе Access использую модуль pypyODBC. В чем может быть ошибка?
ZerG
А если руками - запрос отрабатывает?
art777
Если выполнить данный запрос в Accese то работает. В python не хочет выполнятся.
PooH
А так?
cur.execute("SELECT Count(DataFull.Status) AS [Count] FROM DataFull HAVING (((DataFull.Status)='НеОбслужен'));")

Кстати, кодировка в начале файла указана? Какая версия питона? Если 2.x то сделайте строку уникодной(“u” перед ковычками)
Shaman
может быть
SELECT Count(DataFull.Status) AS [Count] FROM DataFull WHERE DataFull.Status="НеОбслужен");
?
art777
PooH
Кстати, кодировка в начале файла указана? Какая версия питона? Если 2.x то сделайте строку уникодной(“u” перед ковычками)
Дело не в кодировке. Так как другие запросы работают. Версия питона 3.4.
Shaman
SELECT Count(DataFull.Status) AS FROM DataFull WHERE DataFull.Status=“НеОбслужен”);
Попробовать могу только завтра.

И еще вопрос: надо ли экранировать кавычки или питон и так сьест?
Shaman
art777
И еще вопрос: надо ли экранировать кавычки или питон и так сьест?
в вариантах
' "text" '
" 'text' "
не нужно
PooH
art777
Дело не в кодировке. Так как другие запросы работают. Версия питона 3.4.
Вам долго “#encode: xxx” попробовать прописать? Судя по ошибке - запрос доходит до базы, и уже там неправильно интерпретируется, один из символов воспринимается как плейсхолдер. У меня два предположения - виноват какой-то из русских символов(в других запросах возможно не попадался этот символ) и еще мне не нравятся двойные ковычки вокруг строки, насколько я знаю, в стандарте sql только одинарные.
art777
Проблема и вправду оказалась с кавычками. Сделал во так:
cur.execute('SELECT Count(DataFull.Status) AS [Count] FROM DataFull WHERE DataFull.Status=\'НеОбслужен\';')
И все заработало. Все таки оказалось надо экранировать. Всем спасибо за помощь.
PooH
art777
Все таки оказалось надо экранировать.
Не надо. Я в своем самом первом ответе привел запрос - строка в одинарных кавычках, а сам запрос в двойных.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB