使用Pandas DataFrame将数据写入Postgresql时出错

时间:2019-07-03 12:19:13

标签: python pandas postgresql csv

我正在尝试将csv列值保存在postgres数据库中。我用熊猫来获取CSV列值。但是每当我尝试将列值保存在数据库表列中时,都会出现错误。 这是我的代码:

import pandas as pd

file = request.files['csvFile[]']
print('file.filename: ',file.filename)
jh = pd.read_csv(file, dtype={"name": str})
names = jh.name
print(names)

user = GenderInfo(name=jh.name)
db.session.add(user)
db.session.commit()

这是打印后的结果

  

names = jh.name

enter image description here

我经常收到错误消息

  

'Series'对象是可变的,因此不能被散列

我在google上搜索了此问题,但我无法解决。有关此问题的任何帮助,或者是否还有其他方法可以将csv列数据保存在数据库列中。

1 个答案:

答案 0 :(得分:0)

完成了! 这是代码

def upload_cs():
    file = request.files['excelFile[]']
    stream = io.StringIO(file.stream.read().decode("UTF8"), newline=None)
    csv_input = csv.DictReader(stream)

    # Validate and deserialize input
    data, errors = genderInfoDto.load(file)

    print('data: ', data)


    for row in csv_input:
        jh = GenderInfo.query.filter_by(name=row['name']).first()
        print('GenderInfo: ', jh)
        if jh:
            return Response(json.dumps({'status': 'failed', 'message': 'gender already exists.'}), status=200,
                            mimetype='application/json')
        print(row['name'])
        user = GenderInfo(row['name'])
        db.session.add(user)
        db.session.commit()
    result = genderInfoDto.dump(user).data
    stream.seek(0)

    return Response(json.dumps({'status': 'success', 'message': 'file upload successfully  .', 'data': result}),
                    status=200, mimetype='application/json')