使用Python检查数据库中是否存在用户名

时间:2019-08-20 16:59:17

标签: python mysql

自从我刚开始学习它以来,我就尝试使用python创建一个小项目。 我正在使用MySQL,数据库中有3个表,ID,用户名和密码。 我试图从stdin获取用户名和密码,并检查它们是否已经存在于我的数据库中。 到目前为止,我尝试过的是:

def login():
  mycursor = mydb.cursor()
  print('Enter username: ')
  username = input()
  checkUsername = mycursor.execute('SELECT username FROM users WHERE username=?', (username))
  if checkUsername != 0:
    print('Username is not exist')
  else:
    print('Logged In!')

但是我收到一条错误消息

You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near '?' at line 1

谢谢。

2 个答案:

答案 0 :(得分:1)

尝试更换

checkUsername = mycursor.execute('SELECT username FROM users WHERE username=?', (username))

使用

checkUsername = mycursor.execute(
'SELECT username FROM users WHERE username = %(username)s', { 'username' : username })

或搭配

checkUsername = mycursor.execute(
'SELECT username FROM users WHERE username = %(username)s', (username,))

答案 1 :(得分:0)

您应该使用mycursor.fetchone()或mycursor.fetchall()来获取数据库中的选定项 除此之外,当使用?将变量放在查询之外时,您得到的错误是由于语法错误而引起的。占位符,您需要将此(username))替换为此(username,)), 尝试类似的事情:

def login():
  mycursor = mydb.cursor()
  print('Enter username: ')
  username = input()
  mycursor.execute('SELECT username FROM users WHERE username=?', (username,))
  checkUsername = mycursor.fetchone()
  if checkUsername != 0:
    print('Username does not exist')
  else:
    print('Logged In!')