Python MySQLdb";从";登录

Python MySQLdb";从";登录,python,mysql,mysql-python,Python,Mysql,Mysql Python,我试图在Python中使用MySQLdb登录到名为acounts的表中,但它对我不起作用。我一直收到“未登录”的消息。这是我的密码: database = MySQLdb.connect("127.0.0.1", "root", "pswd", "Kazzah") cursor = database.cursor() cursor.execute("SELECT * FROM Accounts WHERE Email='%s' AND Password='%s'" % (_Email, _Pas

我试图在Python中使用MySQLdb登录到名为acounts的表中,但它对我不起作用。我一直收到“未登录”的消息。这是我的密码:

database = MySQLdb.connect("127.0.0.1", "root", "pswd", "Kazzah")
cursor = database.cursor()
cursor.execute("SELECT * FROM Accounts WHERE Email='%s' AND Password='%s'" % (_Email, _Password)) 
database.commit()
numrows = cursor.rowcount

if numrows == 1:
    msg = "Logged In"
else:
    msg = "Not Logged In" 

cursor.close()
database.close()

我做错了什么?我是新手,所以我希望我做得不错。谢谢。

请尝试删除%s左右的引号

cursor.execute("SELECT * FROM Accounts WHERE Email=%s AND Password=%s" % (_Email, _Password))
试试这个。如果您使用MySQLdb的参数支持而不是python的格式字符串,那么库将为您进行转义(出于安全原因,这也是非常重要的一点)

请注意,mysqldb数据库驱动程序只支持%s,因此无论要发送到数据库的数据类型如何,都必须使用它。

出于某种原因(我认为是因为使用了终端),当我输入信息时,我必须按Enter键。我相信当我按Enter键时,“\n”被插入,这是导致numrows返回0的原因

我把

.replace('\n', '')

在电子邮件和密码之后,现在它工作得很好!现在我还有一个其他问题,但没什么大问题。感谢大家的帮助!

你为什么要做
database.commit()
?您没有向数据库写入任何内容。如果删除它,它是否正常工作?如果可以,请告诉我,我将添加它作为答案。您是否尝试过在MySQL界面中运行此查询?它返回的确切内容是什么?Josvic,我删除了它,但它什么也不做。Linker,是的,它在phpMyAdmin中工作正常。@MostyMostacho\u电子邮件包含用户的电子邮件和相同的密码。我已经测试过了,他们确实有数据。这不会导致错误,你一定是做错了什么。此外,你应该确保电子邮件和密码组合与python格式字符串是唯一的。这可能会导致严重的安全问题,最好使用数据库库的参数功能rary(见我的答案)@pjama我需要添加单引号,因为它给出了一个错误。为什么numrows不返回1?它返回什么?0,无需其他命令?
print numrows
prints圆括号?我终于有机会再次查看代码并打印numrows prints 0。
.replace('\n', '')