Загрузка данных
import sqlite3
def init_db():
with sqlite3.connect("contacts.db") as conn:
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS contacts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
phone TEXT NOT NULL,
email TEXT
)
""")
conn.commit()
def add_contact(name: str, phone: str, email: str):
with sqlite3.connect("contacts.db") as conn:
cursor = conn.cursor()
cursor.execute(
"INSERT INTO contacts (name, phone, email) VALUES (?, ?, ?)",
(name, phone, email)
)
conn.commit()
print("Контакт успешно добавлен.")
def get_all_contacts():
with sqlite3.connect("contacts.db") as conn:
cursor = conn.cursor()
cursor.execute("SELECT id, name, phone, email FROM contacts")
rows = cursor.fetchall()
if not rows:
print("Список контактов пуст.")
return
print("\n--- Список контактов ---")
for cid, name, phone, email in rows:
print(f"[{cid}] {name} | Тел: {phone} | Email: {email}")
def find_contact_by_name(name: str):
with sqlite3.connect("contacts.db") as conn:
cursor = conn.cursor()
cursor.execute(
"SELECT id, name, phone, email FROM contacts WHERE name LIKE ?",
(f"%{name}%",)
)
rows = cursor.fetchall()
if not rows:
print(f"Контакты с именем '{name}' не найдены.")
return
print(f"\n--- Результаты поиска для '{name}' ---")
for cid, cname, phone, email in rows:
print(f"[{cid}] {cname} | Тел: {phone} | Email: {email}")
def update_phone(contact_id: int, new_phone: str):
with sqlite3.connect("contacts.db") as conn:
cursor = conn.cursor()
cursor.execute(
"UPDATE contacts SET phone = ? WHERE id = ?",
(new_phone, contact_id)
)
conn.commit()
if cursor.rowcount > 0:
print("Телефон успешно обновлен.")
else:
print(f"Контакт с ID {contact_id} не найден.")
def delete_contact(contact_id: int):
with sqlite3.connect("contacts.db") as conn:
cursor = conn.cursor()
cursor.execute("DELETE FROM contacts WHERE id = ?", (contact_id,))
conn.commit()
if cursor.rowcount > 0:
print("Контакт успешно удален.")
else:
print(f"Контакт с ID {contact_id} не найден.")
def main():
init_db()
menu = (
"\n1. Добавить контакт\n"
"2. Показать все контакты\n"
"3. Найти контакт по имени\n"
"4. Обновить телефон контакта\n"
"5. Удалить контакт\n"
"0. Выход\n"
"Выберите действие: "
)
while True:
choice = input(menu).strip()
if choice == "1":
name = input("Имя: ").strip()
phone = input("Телефон: ").strip()
email = input("Email: ").strip()
if name and phone:
add_contact(name, phone, email)
else:
print("Имя и телефон обязательны к заполнению.")
elif choice == "2":
get_all_contacts()
elif choice == "3":
name = input("Введите имя для поиска: ").strip()
find_contact_by_name(name)
elif choice == "4":
try:
cid = int(input("Введите ID контакта: ").strip())
new_phone = input("Новый номер телефона: ").strip()
update_phone(cid, new_phone)
except ValueError:
print("ID должен быть числом.")
elif choice == "5":
try:
cid = int(input("Введите ID контакта для удаления: ").strip())
delete_contact(cid)
except ValueError:
print("ID должен быть числом.")
elif choice == "0":
print("Выход из программы.")
break
else:
print("Некорректный ввод, попробуйте снова.")
if __name__ == "__main__":
main()