自从我刚开始学习它以来,我就尝试使用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
谢谢。
答案 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!')