Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 27, 2015 08:48:26

art777
Зарегистрирован: 2014-09-17
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с запросом.

День добрый. Возникла следующая проблема. Пытаюсь выполнить следующий запрос

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. В чем может быть ошибка?

Офлайн

#2 Янв. 27, 2015 09:23:24

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 1860
Репутация: +  54  -
Профиль   Отправить e-mail  

Проблема с запросом.

А если руками - запрос отрабатывает?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Янв. 27, 2015 09:42:46

art777
Зарегистрирован: 2014-09-17
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с запросом.

Если выполнить данный запрос в Accese то работает. В python не хочет выполнятся.

Офлайн

#4 Янв. 27, 2015 10:07:54

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Проблема с запросом.

А так?

cur.execute("SELECT Count(DataFull.Status) AS [Count] FROM DataFull HAVING (((DataFull.Status)='НеОбслужен'));")

Кстати, кодировка в начале файла указана? Какая версия питона? Если 2.x то сделайте строку уникодной(“u” перед ковычками)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Янв. 27, 2015 11:05:58

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Проблема с запросом.

может быть

SELECT Count(DataFull.Status) AS [Count] FROM DataFull WHERE DataFull.Status="НеОбслужен");
?

Офлайн

#6 Янв. 27, 2015 11:23:36

art777
Зарегистрирован: 2014-09-17
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с запросом.

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

И еще вопрос: надо ли экранировать кавычки или питон и так сьест?

Офлайн

#7 Янв. 27, 2015 12:50:03

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Проблема с запросом.

art777
И еще вопрос: надо ли экранировать кавычки или питон и так сьест?
в вариантах
' "text" '
" 'text' "
не нужно

Офлайн

#8 Янв. 27, 2015 13:36:58

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Проблема с запросом.

art777
Дело не в кодировке. Так как другие запросы работают. Версия питона 3.4.
Вам долго “#encode: xxx” попробовать прописать? Судя по ошибке - запрос доходит до базы, и уже там неправильно интерпретируется, один из символов воспринимается как плейсхолдер. У меня два предположения - виноват какой-то из русских символов(в других запросах возможно не попадался этот символ) и еще мне не нравятся двойные ковычки вокруг строки, насколько я знаю, в стандарте sql только одинарные.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#9 Янв. 28, 2015 03:32:09

art777
Зарегистрирован: 2014-09-17
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с запросом.

Проблема и вправду оказалась с кавычками. Сделал во так:

cur.execute('SELECT Count(DataFull.Status) AS [Count] FROM DataFull WHERE DataFull.Status=\'НеОбслужен\';')
И все заработало. Все таки оказалось надо экранировать. Всем спасибо за помощь.

Офлайн

#10 Янв. 28, 2015 05:40:48

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Проблема с запросом.

art777
Все таки оказалось надо экранировать.
Не надо. Я в своем самом первом ответе привел запрос - строка в одинарных кавычках, а сам запрос в двойных.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version