Python: TypeError: 'str' 对象不可调用 (mssql)

-1 投票
1 回答
999 浏览
提问于 2025-04-18 14:15

我遇到了一个无法解决的问题。
我创建了一个Python包,这个包里有很多东西,其中有一个类里的函数可以向数据库发送查询并获取结果。
我还有一个单独的程序在使用这个函数。
整个结构看起来是这样的:

Oddjob(一个独立的Python模块):

def query(self, query):
    """
    Running a query against Oddjob and returning result
    :param query: The query to run
    :return:
    """
    try:
        qr = self.c.execute(query)
        qry = self.c.fetchall()
    except Exception, e:
        qry = e
    return qry

这部分 ^^^ 是被调用的内容。

需要执行的查询保存在一个变量里,像这样:

sAvail = "exec sp_avi @week='32'"

然后这样调用:

SAvailability(oddjob.query(str(sAvail)))

顺便提一下,SAvailability是这个代码:

def SAvailability(result):
    shipped = result[0]
    onhold = result[1]

    percentWO = 100 / int(shipped)
    percentOnHold = percentWO * int(onhold)
    total = str(int(math.floor(100 - percentOnHold)))

    return total

不过请注意,我提供SAvailability函数只是为了说明,当我把查询和另一个函数一起使用时,我遇到同样的问题:

TypeError: 'str' object is not callable

完整的错误追踪信息是:

  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1836, in __call__
  return self.wsgi_app(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1820, in wsgi_app
  response = self.make_response(self.handle_exception(e))
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1403, in handle_exception
  reraise(exc_type, exc_value, tb)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
  response = self.full_dispatch_request()
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
  rv = self.handle_user_exception(e)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
  reraise(exc_type, exc_value, tb)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
  rv = self.dispatch_request()
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request
  return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/arthur/Dropbox/Scaramanga_Development/scaramanga/server.py", line 1062, in dashboard_HEAD
SAvailability(oddjob.query(str(sAvail))),

TypeError: 'str' object is not callable

我尝试在各个地方添加str(),但似乎没有任何变化。
有没有人能看到我遗漏了什么明显的东西?

1 个回答

2

我试着在左边、右边和中间都加上str(),但是好像没有什么变化。有没有人能看出我漏掉了什么明显的东西?

我猜你可能在某个地方设置了 str="blablabla"

print type(str) 来检查结果,如果输出是 str,可以试试用 del str 来删除它。

撰写回答