我正在使用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)不存在。关于出了什么问题的任何线索?
答案 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