python - MySQL Python - 字母数字值的 VARCHAR 问题

标签 python mysql

<分区>

我正在尝试制作一个基于密码输入的访问控制系统。我遇到了关于如何检查输入的密码是否存在于 MySQL 数据库中的问题。

下面的代码片段有效,它要求输入密码,并且当密码包含数字时可以成功地用数据库解析它。

pin_inp = raw_input("Enter PIN: ")
cursor.execute("SELECT COUNT(1) FROM members WHERE pincode = " + pin_inp + ";")

不过我想要字母数字密码。我以为我可以将 pincode 列创建为 VARCHAR 并输入字母数字 pincode,但它不会成功地使用数据库进行解析。对于字母数字条目,我得到这个错误:

_mysql_exceptions.OperationalError: (1054, "Unknown column '7988DB' in 'where clause'")

所以我在 members 表中有几行用于测试,一些在列 pincode 中有数值,一些有字母数字值。当我运行上面的代码时,数字输入正常,但字母数字值抛出 1054 错误。

最佳答案

当您使用数值时,您只需像以前那样输入它们,但是当您使用字母数字值时,您必须用撇号将它们括起来,就像这样'我的值'。因此,将您的代码更改为:

cursor.execute("SELECT COUNT(1) FROM members WHERE pincode = '" + pin_inp + "';")

但是,这里要小心。此代码将对 SQL 注入(inject)开放,因为 pin_inp 来自用户的输入。您要么必须验证它,要么最好使用 parameterized SQL statement .

关于python - MySQL Python - 字母数字值的 VARCHAR 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48476984/

相关文章:

python - 从 python 运行 R 脚本

python - View 未返回 HttpResponse 对象错误

通过 ASP.NET 连接 MySQL

mysql - Mysql表水平排序

python - 将复杂命令转换为 python 子进程

python - Pandas 堆积条形图中元素的排序

mysql - 删除重复行并合并单元格值mysql

javascript - 如何将文本文件的数据保存到变量中并在 php 文件中读取/显示它?

python - Django - 通过外键排序

python - 从多个 URL 中提取原始文本