Уведомления

Группа в Telegram: @pythonsu

#1 Июль 11, 2014 09:20:55

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

Проверить есть ли значение в кортеже

Делаю запрос к БД.

postcursor.execute('SELECT customer_id FROM REQUEST')
postselect_request_customer_id_result = postcursor.fetchall()
print postselect_request_customer_id_result
На консоли я вижу:


Как понимаю из БД мне возвражается кортеж. Так? Я пытаюсь проверить есть ли в нем число 6. Делаю так (для примера в отдельном файле). В итого “print ”6 is here“” не обрабатывается.

f = [(1,), (2,), (3,), (4,), (6,)]
print f
if 6 in f:
	print "6 is here"

В чем причина?

Офлайн

#2 Июль 11, 2014 10:11:41

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

Проверить есть ли значение в кортеже

if (6,) in f:
	print "6 is here"

Офлайн

#3 Июль 11, 2014 10:14:30

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

Проверить есть ли значение в кортеже

Shaman
Спасибо, а почему из БД возвращается число с запятой? Как возвращать оттуда нормальный список?

Офлайн

#4 Июль 11, 2014 11:56:17

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

Проверить есть ли значение в кортеже

Я не знаю зачем вы присваиваете f список чисел с запятой.

Офлайн

#5 Июль 11, 2014 12:58:02

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

Проверить есть ли значение в кортеже

Shaman
Мне из БД такой результат выдается на консоль.

Офлайн

#6 Июль 11, 2014 13:09:25

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

Проверить есть ли значение в кортеже

>>> (42)
42
>>> (42,)
(42,)
>>> type((42,))
<type 'tuple'>
>>> (42,)[0]
42
>>> 

Офлайн

#7 Июль 11, 2014 21:24:58

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Проверить есть ли значение в кортеже

В соседней теме было решение http://python.su/forum/topic/24612/

postselect_request_customer_id_result = [r[0] for r in  postcursor.fetchall()]



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#8 Июль 11, 2014 21:53:15

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Проверить есть ли значение в кортеже

Suliman
а почему из БД возвращается число с запятой?

Потому что это разные записи базы, где каждая запись включает одно поле.

>>> f = [(1,), (2,), (3,), (4,), (6,)]
>>> f = sum(f, ())
>>> f
(1, 2, 3, 4, 6)
>>>



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version