2015-11-08 126 views
0

试图上传一个csv文件,打开它,然后遍历行来插入每个字段到postgres数据库,我有2(确定迄今)问题与此。我使用Flask而不是Django。如何上传csv文件并使用Flask,postgres和Python将数据输入数据库?

  1. 我得到一个压痕错误,虽然我不能为我的生命看到。解决

  2. 该heroku日志没有提供其他反馈,所以我不确定即使该文件正确打开并阅读。

CSV文件是:

first_name last_name email etc. # in all 8 columns 
John  Smith  [email protected] 

和Python代码是:

@app.route("/uploadcsv", methods=['POST']) 
def uploadcsv(): 
csvfile = request.files['file'] 
with open(csvfile): 
    reader = csv.DictReader(csvfile) 
    for row in reader: 
     firstname = row['first_name'] 
     query = Prospect(first_name=firstname) 
     db.session.add(query) 
     db.session.commit() 
     return "OK" 

因此,有2个问题:

  1. 什么压痕问题?已解决

  2. 上传,打开和插入代码是否正确?

回答

1

您还没有缩进for循环体:

for row in data: 
    first_name = row['first_name'] 
    sql = Prospect(first_name=first_name) #truncated for brevity 
    db.session.add(sql) 
    db.session.commit() 

如果它不是,那么它可能混合制表符和空格。 Python可以处理一个或另一个,但从来都不是!

你最好用csv Python library。没有必要尝试自己解析csv文件!

+0

谢谢我应该补充说我没有导入CVS。正如你所建议的,我会检查标签和空格。剩下的?它至少在方法上看起来是否正确? – user1903663

+0

谢谢,缩进已解决。但是,上传和插入不起作用。 Heroku没有理由,只是500响应。请你能给我看看我现在修改过的代码吗?谢谢! – user1903663

+0

如果您收到服务器错误,请检查您的日志以获取错误消息。 –

相关问题