Форум сайта python.su
0
Доброго времени суток, уважаемые коллеги.
При написании простенького скрипта - вывалилась проблема, которую не могу решить ни на перле ни на питоне. Заключается в следующем:
есть запрос в БД, который обычно что либо возвращает, но иногда в БД просто не существует той записи, которую он просит. Соответственно запрос не возвращает ничего.
Теперь вопрос: как мне “поймать” и обработать это “ничего”. Может быть я не с той стороны захожу?
Сразу предупрежу вопросы - сделать другой запрос и решить проблему средствами мускуля нельзя
Если кто нибудь поможет - это будет счастье, век помнить буду )) Заранее спасибо за ответы) Всем добра!
Офлайн
568
А как Вы питоном обращаетесь к БД?
Вот прям конкретно как, тут и напишите.
Офлайн
7
Да, хотелось бы увидеть, как вы получаете результат запроса вообще. А ещё, в питоне “ничего” - это None
Офлайн
0
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, то выполнять что угодно.
Офлайн
7
Для подсказанного, вам наверное советовали использовать SELECT COUNT?
А если по вашему запросу там ничего и не выпадает ошибки, то в чём проблема?
Добавьте это в конец вашего куска
if not pri: print 'Nothing, epta'
Офлайн
0
Вот я нуб ))
Я понимал, что так сделать можно, но нигде не нашёл синтаксиса. Оказалось всё проще простого)
Спасибо вам огромное, месяц напряжённых мозгостраданий решился одной строкой)))
Офлайн