我目前正在尝试将一个pandas数据框中的数据存储在一个烧瓶会话对象中,并在我的程序中稍后读取会话对象,但我不断得到一个'KeyError'。我有一个密钥集。
以下是示例代码:
@app.route('/test', methods = ['GET', 'POST'])
def test():
if request.method == 'POST'
if file and allowed_file(file.filename):
df = pandas.io.parsers.read_csv(StringIO.StringIO(file.read()))
session['data'] = df.to_json()
return redirect('hello_world')
@app.route('/hello_world')
def hello_world():
df = pandas.io.json.read_json(session['data'])
return "Hello World"
重定向可能看起来很奇怪,我知道我没有对会话['数据']做任何事情,但这只是一个异常的例子,我不知道如何解决或为什么会产生错误。
编辑:
为了提供更多代码和程序来演示我收到的错误,我写了一个快速测试用例,可以在下面找到:
from flask import Flask, redirect, render_template, request, session, url_for
import pandas
import StringIO
app = Flask(__name__)
app.config['SECRET_KEY'] = 'my_secret_key'
@app.route('/', methods=['GET', 'POST'])
def hello():
if request.method == 'POST':
file = request.files['file']
if file:
df = pandas.io.parsers.read_csv(StringIO.StringIO(file.read()))
session['data'] = df.to_json()
return redirect(url_for('world'))
return '''
<!doctype html>
<title>Upload new File</title>
<h1>Upload new File</h1>
<form action="" method=post enctype=multipart/form-data>
<p><input type=file name=file>
<input type=submit value=Upload>
</form>
'''
@app.route('/world/')
def world():
df = pandas.io.json.read_json(session['data'])
return "Hello World"
if __name__ == '__main__':
app.run(debug=True)
我收到的错误是KeyError:'data'并追溯产生错误的代码行产生一行:df = pandas.io.json.read_json(session ['data'])