2017-10-18 112 views
0

我想帮助的只有一件事蟒蛇,烧瓶和mysql

@app.route('/getdata', methods =['GET', 'POST']) 
#@requires_auth 
def get_data(): 

    config = { 
     'user': 'user', 
     'password': 'password.', 
     'host': '127.0.0.1', 
     'database': 'database', 
     'raise_on_warnings': True, 
     'use_pure': False, 
    } 

    cnx = mysql.connector.connect(**config) 

    cur = cnx.cursor() 

    cur.execute("SELECT hash FROM hash_files") 


    rows = cur.fetchall() 
    response = [row[0] for row in rows] 

    return jsonify(response) 


    cnx.close() 

我得到这个错误“的元组索引必须是整数,而不是STR”有人可以帮助我吗?

我之前得到了错误,但现在我有这个

 Traceback (most recent call last): 
    File "C:\Python27\lib\site-packages\flask\app.py", line 1997, in __call__ 
    return self.wsgi_app(environ, start_response) 
    File "C:\Python27\lib\site-packages\flask\app.py", line 1985, in wsgi_app 
    response = self.handle_exception(e) 
    File "C:\Python27\lib\site-packages\flask\app.py", line 1540, in handle_exception 
    reraise(exc_type, exc_value, tb) 
    File "C:\Python27\lib\site-packages\flask\app.py", line 1982, in wsgi_app 
    response = self.full_dispatch_request() 
    File "C:\Python27\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request 
    rv = self.handle_user_exception(e) 
    File "C:\Python27\lib\site-packages\flask\app.py", line 1517, in handle_user_exception 
    reraise(exc_type, exc_value, tb) 
    File "C:\Python27\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request 
    rv = self.dispatch_request() 
    File "C:\Python27\lib\site-packages\flask\app.py", line 1598, in dispatch_request 
    return self.view_functions[rule.endpoint](**req.view_args) 
    File "C:\Python27\webapi\venv\webapi.py", line 59, in get_data 
    cnx = mysql.connector.connect(**config) 
    File "C:\Python27\lib\site-packages\mysql\connector\__init__.py", line 179, in connect 
    return MySQLConnection(*args, **kwargs) 
    File "C:\Python27\lib\site-packages\mysql\connector\connection.py", line 98, in __init__ 
    self.close() 
    File "C:\Python27\lib\site-packages\mysql\connector\connection.py", line 252, in close 
    self.cmd_quit() 
    File "C:\Python27\lib\site-packages\mysql\connector\connection.py", line 581, in cmd_quit 
    self._socket.send(packet, 0, 0) 
    File "C:\Python27\lib\site-packages\mysql\connector\network.py", line 143, in send_plain 
    errno=2055, values=(self.get_address(), _strioerror(err))) 
    File "C:\Python27\lib\site-packages\mysql\connector\errors.py", line 185, in __init__ 
    self.msg = self.msg % values 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 46: ordinal not in range(128) 

对不起,长的错误,我didin't知道,如果你需要的一切,所以我发这样的

我de程序与sqlite3工作,但我需要使用MySQL所以获取所有的数据在网络API和其他程序获取数据到一个阵列,它现在不工作

+0

请编辑您的文章,以包括错误打印输出 – 0TTT0

+0

@ 0TTT0我现在添加它,谢谢 – ShwSvn

+0

@ShwSvn你试图调用api使用不同的脚本,你发布的脚本回溯。请将您的原始程序中的痕迹发回。 – anupsabraham

回答

1

.fetchall()函数返回元组列表。所以row是一个元组,你不能这样做row['hash']。这就是为什么你会收到错误tuple indices must be integers, not str

要访问元组中的值,你需要使用索引:row[0]

编辑:

对于固定的解码错误,你需要read this。由于在这里发布是一个很长的答案,而且其他人已经很好地回答了,所以我并没有在这里输入。

+0

那样?我改变了后 但是知道我收到我张贴 的UnicodeDecodeError 的UnicodeDecodeError其他错误:“ASCII”编解码器不能在46位解码字节0xe3:在范围序数不(128) – ShwSvn

+0

@ShwSvn请仔细阅读本更好地理解你目前的问题。 https://stackoverflow.com/a/35444608/1666143 – anupsabraham

+1

不,堆栈跟踪显示,得到的结果,但在'connect()' – mata