如何让 SQL Python 找到用户名是否已经在数据库中?

问题描述

这是我第一次使用sql,我很困惑。我想让 python 检查用户名是否已经在数据库中。例如,有人写“注册”,它将获取他们的用户名并检查他们是否已经在那里。我有代码,但它绝对不起作用。它只是检查,什么也不做。

mycursor.execute("""SELECT * FROM TestDatabase WHERE name=%s""",(Username))

我想让它回馈一些东西。就像,至少给出一个错误。这样我就可以使用“尝试”了。有没有办法从中获得输出? 提前致谢。

解决方法

mycursor.execute 本身只准备和执行查询,但它不会给你结果。

要获得结果,您必须使用游标的提取方法之一,例如 fetchone()fetchmany()fetchall()

示例:

mycursor.execute("""SELECT * FROM TestDatabase WHERE name=%s""",(Username,))
rows = mycursor.fetchall()

然后你可以在之后检查rows

您可以在此处找到有关游标方法的更多信息:

https://www.python.org/dev/peps/pep-0249/

跟进:

注意参数必须是可迭代的,例如元组或列表,即使您只向游标传递一个参数。

这将失败:

mycursor.execute("""SELECT * FROM TestDatabase WHERE name=%s""",(Username))

要使其成为元组,请在用户名后添加 ,

mycursor.execute("""SELECT * FROM TestDatabase WHERE name=%s""",))

或者让它成为一个列表:

mycursor.execute("""SELECT * FROM TestDatabase WHERE name=%s""",[Username])