如何将python程序与数据库连接?

如何将python程序与数据库连接?,python,database,window,Python,Database,Window,我是python的初学者。我有一个关于access系统的项目,它使用python编码并连接到数据库。当我运行代码时,它没有连接到数据库,我不知道如何将用户输入与数据库值进行比较 import pymysql,time def login(): db = pymysql.connect(host='localhost',user='root',password='',db='ghost') cursor = db.cursor() while True:

我是python的初学者。我有一个关于access系统的项目,它使用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):
我已经在数据库中输入了正确的用户代码和密码。 我希望你能帮助我

“从`user`中选择*其中usercode='$usercode'和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))
在PyMySQL github页面上可以找到更多示例:


如果不想使用绑定,也可以通过格式化语句来自行构建语句

注意:在生产环境中,这是一种安全风险,绑定是实现这一点的首选方法,下面的示例实际上只是为了展示一种替代方法

    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)

它未连接到数据库
如果您收到错误消息,请将其添加到上面的问题中。您还可以尝试使用相同的凭据与任何其他DB管理器连接到您的DB,以确保这不是用户名/密码/DB的问题。我在问题上添加了cmd结果。我不知道如何连接数据库我已经改变了。然后我再次运行程序,但仍然有错误否,请不要建议“手动”格式化查询字符串。这应该始终通过绑定完成。这就是错误。。。。。C:\Users\Dell Inspiron Mini>D:D:\>xampp\htdocs\T1.py请输入您的用户代码:7803069请输入您的密码:3069回溯(最近一次调用):文件“D:\xampp\htdocs\T1.py”,第29行,登录打印(“成功”+i[2])第17行,登录()文件“D:\xampp\htdocs\T1.py”中,类型错误:只能连接str(不是“int”)到str@SyameezaNatasha
print(“SUCCESS”+str(i[2])
-同样,使用
格式可以更好地实现这一点,因为它将为您处理类型转换。@SyameezaNatasha请阅读您刚刚发布的错误信息。它准确地告诉你问题出在哪里,出在哪里。您尝试使用+运算符将字符串SUCCESS与
i[2]
中的结果中的整数连接起来。