Получение ввода из Python для использования в запросе SQL и возврата результатов на экран - PullRequest
0 голосов
/ 14 мая 2019

У меня есть приложение на python, в котором я пытаюсь вернуть результаты из базы данных MSSQL, полученной из входных данных, введенных в приложение python

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

# Select IP
input_var = input("Enter IP Address: ")

def IP_Search():
    cursor.execute("SELECT IP, Location, Description, Project, OS, DNS, NETBIOS, MAC FROM [IPAM].[dbo].[Sheet1$] WHERE IP=(?)" (input_var)) 
        row = cursor.fetchall()
        while row: 
            print(IP_Search)
            row = cursor.fetchall()

Я ожидаю, что он выберет запись, соответствующую IP-адресу, введенному пользователем

1 Ответ

0 голосов
/ 14 мая 2019

Обновление учетной записи для SQL-инъекций.

Вам нужно отформатировать строку, есть несколько способов сделать это.

В настоящее время в Python рекомендуется использовать строки нового формата. F перед строкой сообщает python, что вы хотите отформатировать строку, а {input_var} сообщает python, что вы хотите заменить это значением переменной input_var.

def IP_Search(input_var): 
    cursor.execute(f"SELECT IP, Location, Description, Project, OS, DNS, NETBIOS, MAC FROM [IPAM].[dbo].[Sheet1$] WHERE IP={input_var}") 
    row = cursor.fetchall() 
    while row:
        print (IP_Search)
        row = cursor.fetchall()

input_var = input("Enter IP Address: ")
IP_Search(input_var)

Однако, как указано в комментариях, база данных остается открытой для атак с использованием SQL-инъекций. Вы можете увидеть детали для этого здесь: https://bobby -tables.com / python

Вместо этого вы передаете переменные в функцию cursor.execute следующим образом:

def IP_Search(input_var): 
    cursor.execute("SELECT IP, Location, Description, Project, OS, DNS, NETBIOS, MAC FROM [IPAM].[dbo].[Sheet1$] WHERE IP=%s", (input_var,)) 
    row = cursor.fetchall() 
    while row:
        print (IP_Search)
        row = cursor.fetchall()

input_var = input("Enter IP Address: ")
IP_Search(input_var)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...