Python: TypeError: 'str' 对象不可调用 (mssql)
我遇到了一个无法解决的问题。
我创建了一个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
来删除它。