问题描述
这是我第一次使用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])