【发布时间】:2019-02-13 12:08:17
【问题描述】:
我正在使用 Flask 创建一个 REST api 来获取存储在 MSSQL 数据库中的所有书籍。当我简单地运行此代码并在控制台中打印数据时,它工作得很好。但是当我作为 Flask API 运行并尝试在邮递员中获取所有数据时,它会显示此错误:
完整的追溯:
Traceback (most recent call last):
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\app.py", line 1741, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
TypeError: read() missing 1 required positional argument: 'self'
127.0.0.1 - - [13/Feb/2019 17:38:21] "GET / HTTP/1.1" 500 -
Traceback (most recent call last):
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\app.py", line 1741, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\raj.pandey\Desktop\Flask_API\lib\site-packages\flask\app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
TypeError: home() missing 1 required positional argument: 'self'
这是我出错的代码:
class MssqlConnection:
def __init__(self):
credentials = Credentials()
self.driver = credentials.driver
self.host = credentials.host
self.database = credentials.database
self.table = credentials.table
self.user = credentials.user
self.password = credentials.password
@app.route('/books')
def read(self):
query = "Select id, name, price, isbn from dbo." + self.table
cursor.execute(query)
for row in cursor:
data = {
'id': row.id,
'name': row.name,
'price': row.price,
'isbn': row.isbn
}
# print(data)
return jsonify(data)
我已经检查过了,但仍然无法理解问题所在。
【问题讨论】:
-
能否请您添加完整的 Traceback?
-
是的,等一下
-
为什么要将“self”参数传递给
def read()?home()相同 ... -
self.table 为此。在初始化后的类中,每个 def 都得到了自己。没有它我无法访问“self.variable”
-
先生,你能把你的邮件ID发给我吗,因为我不能在这里放那么多代码?所以我会把我的代码发给你。
标签: python-3.x rest flask