使用python执行SQL查询时语法无效

问题描述 投票:-1回答:2

我正在尝试在python中使用pymysql运行以下SQL查询

cursor.execute(""SELECT count(1) from user_login WHERE user_id="+username + "and password="+password"")

这里username = abc和password = xyz是带有值的变量

我知道引号有问题。有人可以建议我这样做的正确方法吗?

python mysql sql mysql-python pymysql
2个回答
-1
投票

直接的问题是您的用户名和密码输入未正确转义为单引号。但是,请勿手动执行此操作;而是使用准备好的语句:

sql = "SELECT COUNT(1) FROM user_login WHERE user_id = %s AND password = %s"
cursor.execute(sql, (username, password,))

另一个问题:我看到您正在将某些密码输入直接与用户表的password列进行比较,这意味着您正在存储明文密码。这是一个很大的安全漏洞,您应该对所有密码进行哈希处理,然后仅将哈希存储在表中。


-2
投票

也尝试以下操作:

sql = "SELECT count(1) from user_login WHERE user_id= {}  and password= {}".format(username,password)
cursor.execute(sql)
© www.soinside.com 2019 - 2024. All rights reserved.