我正在尝试在python中使用pymysql运行以下SQL查询
cursor.execute(""SELECT count(1) from user_login WHERE user_id="+username + "and password="+password"")
这里username = abc和password = xyz是带有值的变量
我知道引号有问题。有人可以建议我这样做的正确方法吗?
直接的问题是您的用户名和密码输入未正确转义为单引号。但是,请勿手动执行此操作;而是使用准备好的语句:
sql = "SELECT COUNT(1) FROM user_login WHERE user_id = %s AND password = %s"
cursor.execute(sql, (username, password,))
另一个问题:我看到您正在将某些密码输入直接与用户表的password
列进行比较,这意味着您正在存储明文密码。这是一个很大的安全漏洞,您应该对所有密码进行哈希处理,然后仅将哈希存储在表中。
也尝试以下操作:
sql = "SELECT count(1) from user_login WHERE user_id= {} and password= {}".format(username,password)
cursor.execute(sql)