как связать программу python с базой данных? - PullRequest
0 голосов
/ 06 июля 2018

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

import pymysql,time

def login():
    db = pymysql.connect(host='localhost',user='root',password='',db='ghost')
    cursor = db.cursor()

    while True:
        usercode = input("please enter your usercode: ")
        password = input("please enter your password: ")

        find_user = ("SELECT * FROM `user` WHERE usercode ='$usercode' AND password = '$password'")
        cursor.execute(find_user)
        results = cursor.fetchall()

        if results:
            for i in results:
                print("SUCCESS "+i[2])
            #return("exit")
            break

        else:
            print("usercode and password not recognised")
            again = input("Do you want to try again?(y/n): ")
            if again.lower() == "n":
                print("Goodbye")
                time.sleep(1)
                #return("exit")
                break
login()

и для вашей информации я использую возвышенный текст 3. Когда я запускаю код на cmd

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Dell Inspiron Mini>D:

D:\>xampp\htdocs\T1.py
please enter your usercode: 7803069
please enter your password: 3069
usercode and password not recognised
Do you want to try again?(y/n):

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

1 Ответ

0 голосов
/ 06 июля 2018

"SELECT * FROM `user` WHERE usercode ='$usercode' AND password = '$password'" будет буквально искать в БД $usercode и $password. Вам нужно будет заменить эти значения.

В идеале, используя привязки SQL / параметризованные запросы.

Пример:

    usercode = input("please enter your usercode: ")
    password = input("please enter your password: ")

    sql = "SELECT * FROM `user` WHERE usercode = %s AND password = %s"
    cursor.execute(sql, (usercode, password))

Больше примеров можно найти на странице github PyMySQL: https://github.com/PyMySQL/PyMySQL


Если вы не хотите использовать привязки, вы также можете создать это утверждение самостоятельно, отформатировав его.

Примечание: в продуктивной среде это угроза безопасности, привязки являются предпочтительным способом сделать это, и следующий пример на самом деле просто показывает альтернативу.

    usercode = input("please enter your usercode: ")
    password = input("please enter your password: ")

    sql = "SELECT * FROM `user` WHERE usercode='{}' AND password='{}'".format(usercode, password)
    cursor.execute(sql)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...