繁体   English   中英

如何解决 psycopg2.errors.UndefinedColumn:列“beans”不存在?

[英]How to solve psycopg2.errors.UndefinedColumn: column "beans" does not exist?

我正在尝试将 get 请求发送到后端路由,该路由根据通过 get 请求发送的参数返回一些查询结果。 起初,我只是对传递给后端路由的参数使用硬编码值,并且查询返回了准确的结果,但是当我将这些硬编码参数替换为有状态 object 的用户名时,它以某种方式读取 %s 值作为列的列名。

我的获取请求如下所示:

async function getStatsData(username) {
    const user = username;
    const flashcard_id = 1;
    const req = axios.get(`http://127.0.0.1:5000/stat/${user}/${flashcard_id}`)
    const res = await req;
    return res.data.results.map((statsItem, index) => {
        return {
            stat1: statsItem.stat1,
            stat2: statsItem.stat2,
            stat3: statsItem.stat3,
            stat4: statsItem.user,
            key: statsItem.key,
            flashcard_id: statsItem.flashcard_id
        }
    })
}

我的后端路线如下所示:

@app.route('/stat/<user>/<flashcard_id>', methods=['GET', 'POST', 'OPTIONS'])
def stats(user, flashcard_id):
  def get_total_percent_correct(username):
    correct = d.db_query('SELECT COUNT(*) FROM cards.responses WHERE guess = answer AND username = %s' % username)[0][0]
    total = d.db_query('SELECT COUNT(*) FROM cards.responses WHERE username = %s' % username)[0][0]
    try:
        return round(float(correct)/float(total),3)*100
    except:
        print('0')

  def get_percent_correct_for_flashcard(username,flashcard_id):
    total = d.db_query('SELECT COUNT(*) FROM cards.responses WHERE username = %s AND flashcard_id = %s' % (username, flashcard_id))[0][0]
    correct = d.db_query('SELECT COUNT(*) FROM cards.responses WHERE flashcard_id = %s AND guess = answer AND username = %s' % (flashcard_id, username))[0][0]
    try:
        return round(float(correct)/float(total),3)*100
    except:
        print('0')

  def get_stats_for_flashcard(username, flashcard_id):
    attempts = d.db_query('SELECT COUNT(*) FROM cards.responses WHERE username = %s AND flashcard_id = %s' % (username, flashcard_id))[0][0]
    correct = d.db_query('SELECT COUNT(*) FROM cards.responses WHERE flashcard_id = %s AND guess = answer AND username = %s' % (flashcard_id, username))[0][0]
    missed = attempts - correct
    return attempts, correct, missed
  
  data = [{
    'flashcard_id': flashcard_id,
    'user': user,
    'stat1': get_total_percent_correct(user),
    'stat2': get_percent_correct_for_flashcard(user, flashcard_id),
    'stat3': get_stats_for_flashcard(user, flashcard_id),
    'stat4': 'nothing yet',
    'key':999
  }]

  return {"response_code" : 200, "results" : data}

错误在 function get_total_percent_correct 中。 这是完整的错误信息:

 File "/home/bryant/work/memorylearning/my-app/backend/main.py", line 66, in get_total_percent_correct
    correct = d.db_query('SELECT COUNT(*) FROM cards.responses WHERE guess = answer AND username = %s' % username)[0][0]
  File "/home/bryant/work/memorylearning/my-app/backend/main.py", line 17, in db_query
    self.cursor.execute(q)
psycopg2.errors.UndefinedColumn: column "beans" does not exist
LINE 1: ...OM cards.responses WHERE guess = answer AND username = beans

我很感激任何帮助。 谢谢你的时间

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM