Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 14, 2010 02:49:05

majestic
От:
Зарегистрирован: 2010-09-22
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверить на вхождение список из кортежей

Привет всем!
Возникла необходимость проверить на вхождение список из кортежей.
SQL запрос из БД (MySQL) возвращает результат в виде списка кортежей. Нужно проверить весь список кортежей, либо каждый кортеж на вхождение (in). Как это можно реализовать с помощью цикла?

Код ниже не проверяет на вхождение. (в таблице заведомо существует поле, которое проверяю на вхождение)

import MySQLdb as db
name = "1111"
conn = db.connect(host="localhost", user="admin", passwd="password", db="database")
cursor = conn.cursor()
sql = """SELECT * FROM `table`"""
cursor.execute(sql)
res = cursor.fetchall()
if name in res:
print "Yes"
else:
print "No"



Офлайн

#2 Окт. 14, 2010 04:06:55

pill
От:
Зарегистрирован: 2010-08-27
Сообщения: 223
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверить на вхождение список из кортежей

как то так:

def check(name, res):
for tuple in res:
if name in tuple:
return True
return False



Офлайн

#3 Окт. 14, 2010 07:59:37

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Проверить на вхождение список из кортежей

majestic
Возникла необходимость проверить на вхождение список из кортежей.
SQL запрос из БД (MySQL) возвращает результат в виде списка кортежей. Нужно проверить весь список кортежей, либо каждый кортеж на вхождение (in). Как это можно реализовать с помощью цикла?

Код ниже не проверяет на вхождение. (в таблице заведомо существует поле, которое проверяю на вхождение)
как-то не понятно, что же именно нужно проверить, существование поля в таблице или существование определенного значения в любом поле таблицы?
первое можно так:
sql = """SELECT * FROM `table`"""
cursor.execute(sql)
if name in cursor.description:
print("yes")
else:
print("no")
второе так
sql = """SELECT * FROM `table`"""
cursor.execute(sql)
is_exist = False
for row in iter(cursor.fetchone, None):
if name in row:
is_exist = True
break

if is_exist:
print("yes")
else:
print("no")



Офлайн

#4 Окт. 14, 2010 09:53:59

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

Проверить на вхождение список из кортежей

Может проще проверить это с помощью SQl?
sql = “”“SELECT * FROM `table` where name=%s”“” % name



Офлайн

#5 Окт. 14, 2010 09:59:40

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Проверить на вхождение список из кортежей

Ed
Может проще проверить это с помощью SQl?
sql = “”“SELECT * FROM `table` where name=%s”“” % name
нет, так нельзя :) ТК ясно выразился: “Как это можно реализовать с помощью цикла?”



Офлайн

#6 Окт. 14, 2010 10:49:56

majestic
От:
Зарегистрирован: 2010-09-22
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверить на вхождение список из кортежей

Всем спасибо за помощь!
Проблема решилась изменением SQL-запроса.
Примерный код программы:

name = “1111”
conn = db.connect(host=“localhost”, user=“admin”, passwd=“password”, db=“database”)
cursor = conn.cursor()
sql = “”“SELECT * FROM `table` WHERE `field`=%s”“”
cursor.execute(sql, name)
res = cursor.fetchall()
if len(res) != 0:
print “Ok”
else:
print “No”



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version