提交时出错

时间:2015-03-23 21:20:03

标签: flask psycopg2

我正在使用flask和psycopg2设置一个简单的应用程序。当我尝试进行简单的数据库更新时,我得到一个"内部服务器错误",抛出一些日志记录,显然

@app.route('/deactivate/<pid>')
def deactivate(pid):
 try:
    sql='update person set active = \'false\' where id = %s'
    logger.debug(LOGID+' running '+sql)
    cur.execute(sql,[pid])
    logger.debug(LOGID+' ran '+sql)
    cur.commit()
    logger.debug(LOGID+' commited '+sql)

投入一些日志记录,很明显它失败了&#34; commit&#34; - 我无法在任何日志中找到任何解释,无论是postgres还是apache。更新后的值将显示在同一个应用程序中的任何调用中,因此更新很顺利,但如果我尝试从其他任何内容进行查询,则更新if(of cource)不存在。关于出了什么问题的任何线索?

1 个答案:

答案 0 :(得分:0)

commit是psycopg2 connection class的一种方法,而不是cursor class。由于您没有向我们显示except条款,因此我认为当您致电AttributeError时,它会吞下cur.commit()

在不知道cur来自何处的情况下,我不知道您的连接对象是否在模块中可用,但它必须是。然后,您希望修改代码,使其看起来像这样:

@app.route('/deactivate/<pid>')
def deactivate(pid):
    try:
        sql = "update person set active = 'false' where id = %s"
        cur.execute(sql, [pid])
        conn.commit()
    except SomeSpecificException:
        # exception handling code here