Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 13, 2013 18:05:22

Mahabharata871
Зарегистрирован: 2013-12-13
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

результат запроса в БД возвращает "ничего" или NULL

Доброго времени суток, уважаемые коллеги.
При написании простенького скрипта - вывалилась проблема, которую не могу решить ни на перле ни на питоне. Заключается в следующем:
есть запрос в БД, который обычно что либо возвращает, но иногда в БД просто не существует той записи, которую он просит. Соответственно запрос не возвращает ничего.
Теперь вопрос: как мне “поймать” и обработать это “ничего”. Может быть я не с той стороны захожу?
Сразу предупрежу вопросы - сделать другой запрос и решить проблему средствами мускуля нельзя
Если кто нибудь поможет - это будет счастье, век помнить буду )) Заранее спасибо за ответы) Всем добра!

Офлайн

#2 Дек. 13, 2013 18:36:58

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

результат запроса в БД возвращает "ничего" или NULL

А как Вы питоном обращаетесь к БД?
Вот прям конкретно как, тут и напишите.



Офлайн

#3 Дек. 13, 2013 20:57:16

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

результат запроса в БД возвращает "ничего" или NULL

Да, хотелось бы увидеть, как вы получаете результат запроса вообще. А ещё, в питоне “ничего” - это None



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#4 Дек. 15, 2013 17:49:18

Mahabharata871
Зарегистрирован: 2013-12-13
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

результат запроса в БД возвращает "ничего" или NULL

db = MySQLdb.connect(host='ip', user='root', passwd='pass', db='my_db')
c = db.cursor()
c.execute('set charset utf8')
c.execute('set names utf8')
zap2 = “SELECT price FROM abon WHERE switch='” + ip + “' and port='” + ports + “'”
c.execute(zap2)
pri = c.fetchall()

При отсутствии абонента на порту, который выбирается - записи в БД просто нет, т.е. записи в БД есть только для абонентов, которые подключены к портам коммутатора.
Вот я и хочу вернуть “своё ничего” ))
Мне подказали с помощью встроенных функций мускуля получать кол-во параметров возращаемых запросом, и если это кол-во == 0, то выполнять что угодно.

Офлайн

#5 Дек. 15, 2013 18:27:12

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

результат запроса в БД возвращает "ничего" или NULL

Для подсказанного, вам наверное советовали использовать SELECT COUNT?
А если по вашему запросу там ничего и не выпадает ошибки, то в чём проблема?

Добавьте это в конец вашего куска

if not pri:
    print 'Nothing, epta'



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#6 Дек. 16, 2013 11:48:35

Mahabharata871
Зарегистрирован: 2013-12-13
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

результат запроса в БД возвращает "ничего" или NULL

Вот я нуб ))
Я понимал, что так сделать можно, но нигде не нашёл синтаксиса. Оказалось всё проще простого)
Спасибо вам огромное, месяц напряжённых мозгостраданий решился одной строкой)))

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version