Python. Поиск ip адреса из базы данных sql, по заданным параметрам

PyCharm. Есть БД с ip адресами (psql). Нужно в графическом интерфейсе (tkinter), сделать поле ввода в которое можно записать параметр поиска ip адреса. Далее по нажатию кнопки они выполняет поиск подходящих ip адресов и записывает их блонкон, или хотя бы пусть выведет их в консоли.

Например найти все ip начинающиеся с 2.ххх.ххх.ххх или ххх.210.ххх.ххх

Я только начинаю это всё изучать, буду рад любой помощи Подключение к бд ( psycopg2 ), графическое окно, поле ввода,кнопку я написал, осталось выполнить поиск нужных ip адресов.

Это мой код. Сейчас я на данном моменте остановился. Не судите строго, первая моя работа!

import datetime
import psycopg2
from tkinter import *
import re
import socket

def Menu():
    window = Tk()
    window.geometry("500x350")
    window.title("___hello___")

    StringVar()
    vcmd = window.register(regulayr)

    IP_label = Label(text="Введите IP: ")
    IP_label.grid(row=3, column=0, padx=5, pady=5, sticky='ew')

    IP_entry = Entry(window, textvariable=StringVar, width=23, validate='key', validatecommand=(vcmd, '%P'))
    IP_entry.grid(row=3, column=1, padx=5, pady=5)

    btn_IP = Button(window, text="Поиск IP")
    btn_IP.config(command=lambda: button3(connector))
    btn_IP.grid(row=3, column=2, padx=3, pady=3)

    window.mainloop()

def Open_DB():
    conn = psycopg2.connect(
        host="XXX",
        user="XXX",
        port="XXX",
        database="XXX",
        password="XXX"
    )
    return conn

def button3(conn):
    cur = conn.cursor()
    cur.execute("SELECT ip FROM IPv4 limit 20")
    rows = cur.fetchall()

    filename = datetime.datetime.now()
    with open(filename.strftime("%d.%m.%Y_%H-%M-%S") + ".txt", 'a+') as txt:
        for row in rows:
            print(row)
            txt.writelines(str(row) + '\n')
    txt.close()

connector = Open_DB()
Menu()


def regulayr(p):
    test = re.compile('(^\d{0,3}$|^\d{1,3}\.\d{0,3}$|^\d{1,3}\.\d{1,3}\.\d{0,3}$|^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{0,3}$)')
    if test.match(p):
        return True
    else:
        return False

Ответы (0 шт):