【问题标题】:import cvs data to sqlite database using python使用python将csv数据导入sqlite数据库
【发布时间】:2017-11-12 15:08:00
【问题描述】:

我想将一个 .csv 文件(由用户从外部上传)导入到我数据库中的一个表中。以下是我的代码:

(对于这个实现,我使用了建议的代码 python import csv to sqlite)

index.py
import sqlite3
import csv
@app.route('/uploadfile')
def uploadfile():
    return render_template('upload_files.html')

 @app.route('/file_read')
 def file_read():
    if request.method == 'POST':
       class csvrd(object):
          def csvFile(self):
            self.readFile('test_file.csv')

          def readFile(self, filename):
            co = sql.connect("database.db")
            cur1 = co.cursor() 
            cur1.execute("""CREATE TABLE IF NOT EXISTS input_data(SID varchar,task varchar)""")
            filename.encode('utf-8')
            with open(filename) as f:
               reader = csv.reader(open(filename, "r"))
               for field in reader:
                    cur1.execute("INSERT INTO input_data VALUES (?,?);", field)
           co.commit()
           co.close()
    return render_template('upload_success.html')

我的 upload_files.html 文件包含允许用户上传 .csv 文件的代码

<html>
<body>
<form action = "{{ url_for('file_read') }}" method = "POST">
<div align="center"><input type=file name=file><input type=submit value=Upload></div>
</form>
</body>
</html>

但是在提交 .csv 文件后,服​​务器给了我错误“方法不允许 请求的 URL 不允许该方法。”错误。 和控制台打印 405

请帮我解决这个问题。

【问题讨论】:

    标签: python csv flask


    【解决方案1】:

    默认情况下,路由只响应 GET,因此您需要显式添加其他接受的方法:

    @app.route('/file_read', methods=['POST'])
    

    【讨论】:

    • 非常感谢。现在它不再给出 405 错误。我被重定向到upload_success.html 页面。但是,它不会创建数据库表并插入记录。
    • 添加一些错误处理。将所有内容包装在 try 中,并使用 except 捕获 csv.Errorsqlite3.Error
    猜你喜欢
    • 2021-04-12
    • 2022-01-21
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 2019-10-17
    • 1970-01-01
    相关资源
    最近更新 更多