使用python执行SQL查询时语法无效[关闭]

Posted

技术标签:

【中文标题】使用python执行SQL查询时语法无效[关闭]【英文标题】:Invalid syntax in executing SQL query using python [closed] 【发布时间】:2020-04-26 16:34:52 【问题描述】:

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

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

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

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

【问题讨论】:

你在查询的开头和结尾多了一个" 【参考方案1】:

直接的问题是您的用户名和密码输入没有正确地用单引号转义。但是,不要手动执行此操作;相反,使用准备好的语句:

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

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

【讨论】:

以上是关于使用python执行SQL查询时语法无效[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Python 返回“SyntaxError:无效的语法 sys 模块”[关闭]

在类python v2.7中时语法无效[关闭]

SQL.fetchall() 使用 Python 失败,出现 SQLState 24000(无效游标状态)

Oracle数据库执行查询语句报错:无效数字。

SQL 语法异常 - 无效字符,但查询工作正常

SQL - 在 DAO 中执行时列名无效