【问题标题】:Python finding a specific value in a databasePython 在数据库中查找特定值
【发布时间】:2018-11-22 22:30:15
【问题描述】:

我正在创建一个 Web 应用程序登录页面,用户在其中输入他们的登录信息,应用程序将获取他们的登录信息,将其与数据库中的内容进行比较,然后确定登录是否是注册用户。我开始做一个快速测试,看看我是否可以从数据库中获取值,但是我遇到的问题是,当我从我希望它找到的用户输入中输入特定值时,我不断得到一个错误指出该值需要是特定参数、行或元组。我正在使用 sql 服务器

@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
try:
connect = pypyodbc.connect('Driver={SQL server};Server=localhost;Database=capstone;uid=;pwd=')
cursor = connect.cursor()
_username = str(request.form['username'])
cursor.execute("SELECT * FROM login WHERE username= (%s)", _username)
dataUser = cursor.fetchone()[1]
 return(dataUser)
except Exception as e:
return (str(e))

【问题讨论】:

  • 您在 where 条件下使用 SQL 通配符进行测试。利用 ?作为参数标记而不是 %s。
  • 我试过了?还是不行
  • 你确定 _username 不是 None 吗?

标签: python sql-server database web-applications


【解决方案1】:

有几种方法可以做到这一点:

# using dictionary
values = {'username': _username, }
cursor.execute("SELECT * FROM login WHERE username=:username", values)

#using tuple:
values = (_username,)
cursor.execute("SELECT * FROM login WHERE username=? ", values)
# Using fetchone will return the object and not an array.
# No need for [1] in 'cursor.fetchone()[1]'
return cursor.fetchone()

【讨论】:

  • 这些选项都不起作用,我仍然收到此消息:Params must be in a list, tuple, or Row.这很奇怪,因为我尝试 cursor.execute("SELECT * FROM login WHERE username='admin89'") 并且它确实返回了密码
猜你喜欢
  • 1970-01-01
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
相关资源
最近更新 更多