Форум сайта python.su
Только начал изучать Python (да и вообще программирование). Нужна программа для вывода данных из базы по номеру телефона.Без проверки наличия номера работает. Но хочу с начала проверить на наличии такой записи в базе и только потом выполнить вывод.
print("Input number in format 0YYYxxxx:") x = input() import sqlite3 conn = sqlite3.connect ("D:\DB_SQLITE\elta_db.db") cursor = conn.cursor() cursor.execute ("""select Raion, bloc, realphone, phone, elta_number.coord, elta_coord.coord, elta_coord.board, elta_coord.port_on_board from elta_number INNER JOIN elta_coord ON elta_number.coord = elta_coord.coord where realphone=?""", (x,)) for row in cursor: if (x,)== row(2): print ("Number= ", row[3]) print ("District= ", row[0]) print ("Bloc= ", row[1]) print ("Coord= " , row[4]) print ("Board= ",row[6]) print ("Port= ",row[7]) else: print ("This number don't exist") conn.close
Офлайн
YongaСудя по всему скобки должны быть квадратные:
if (x,)== row(2):
if (x,)== row[2]:
Офлайн
вы правы - должны быть квадратные скобки.Ошибка исчезла, но в результате все наоборот. Когда ввожу номер существующий в базе - ответ - “This number don't exist”. Когда ввожу несуществующий номер - ничего.
Офлайн
Пробуйте:
if x == row[2]:
Офлайн
rami
Пробуйте:
if x == row:
Отредактировано Yonga (Ноя. 15, 2018 13:30:15)
Офлайн
Запакуйте базу и файл с кодом в архив и выложите здесь.
Офлайн
Добавил преобразование в int():
for row in cursor: if int(x) == int(row[2]):
Прикреплённый файлы:
select.rar (14,2 KБ)
Офлайн
Нужно сначала получить список результатов запроса, а затем, если список не пустой пройти циклом, если пустой, то сообщить, что пусто.
Пробуйте так:
print("Input number in format YYYxxxx:") x = input() import sqlite3 #conn = sqlite3.connect ("D:\DB_SQLITE\elta_db.db") conn = sqlite3.connect ("Elta_DB.db") cursor = conn.cursor() cursor.execute ("""select Raion, bloc, realphone, phone, elta_number.coord, elta_coord.coord, elta_coord.board, elta_coord.port_on_board from elta_number INNER JOIN elta_coord ON elta_number.coord = elta_coord.coord where realphone=?""",(x,)) data=cursor.fetchall() #если номер существует, то что-то получим, если нет, то пустой список if len(data): for row in data: # if int(x) == int(row[2]): #это не нужно, если мы здесь, то есть нужные данные print ("Number= ", row[2]) print ("District= ", row[0]) print ("Bloc= ", row[1]) print ("Coord= " , row[4]) print ("Board= ",row[6]) print ("Port= ",row[7]) else: print ("This number don't exist") conn.close
Офлайн
Спасибо, Rami. Все работает.
Офлайн