【问题标题】:Running query on csv file through flask通过烧瓶对csv文件运行查询
【发布时间】:2021-10-29 11:51:04
【问题描述】:

我不是程序员,我正在努力学习并将其用于作业。我需要使用烧瓶休息 API 来搜索数据并将数据从 CSV 文件提取到页面。目标是让用户在 /logcheck/ 上插入字符串,这将触发在 csv 文件中搜索 并提取整行数据并返回结果。

CSV 样本和位置 /家/日志/ 以及 CSV 文件内容的示例截图如下: [在此处输入图片描述][1] [1]:https://i.stack.imgur.com/GQpDb.png

烧瓶代码如下:

import csv
from io import StringIO
import sys
from flask import Flask, request, send_file, jsonify, Response, render_template
from flask.helpers import make_response

csv_file = csv.reader(open('/home/logs/containerlogs.csv', "r"), delimiter=",")


@app.route('/logcheck/<user_input>', methods=['GET'])
def logcheck(user_input):
    healthy = request.form ['healthy']
    unhealthy = request.form ['unhealthy']
if user_input not healthy or not unhealthy:
    return make_response("Please try again./n Only word /logcheck/healthy or logcheck/unhealthy)
else:
    for row in csv_file:
        if user_input == row[0 or 1 or 2 or 3 or 4 or 5]:
            return make_response (print (row))

提前致谢。

【问题讨论】:

    标签: rest csv flask


    【解决方案1】:

    代码如下:

    #!/usr/bin/python3
    import csv, json
    from flask import Flask, make_response
    
    csv_rows = []
    with open('containerlogs.csv', "r") as o:
        csv_file = csv.reader(o, delimiter=",")
        for row in csv_file:
            csv_rows.append(row)
        o.close()
    
    app = Flask(__name__)
    
    @app.route('/logcheck/<user_input>', methods=['GET'])
    def logcheck(user_input):
        #healthy = request.form ['healthy']     # Why request.form?
        #unhealthy = request.form ['unhealthy'] # If requests.form it works only when methods=['POST'].
        #if user_input not healthy or not unhealthy:
        if user_input != 'healthy' and user_input != 'unhealthy':
            return make_response("Please try again./n Only word /logcheck/healthy or logcheck/unhealthy")
        else:
            rows = '' #[]
            for row in csv_rows:
                if user_input in row:
                    #rows.append(row)
                    rows += ', '.join(row) + '<br>'
            return make_response (rows) #json.dumps (rows)
    
    app.run("0.0.0.0", 8080)
    

    【讨论】:

    • 嗨,利马。谢谢你。上面的代码可以工作,但是,结果会在页面上以单行形式抛出。每个结果可以在页面上逐行显示吗?
    • 有些地方建议添加“/n”,但幸运的是,它不起作用。如您所见,我的编程知识非常有限。以下是输出结果,每个结果都没有换行符。有没有办法在每个“]”的末尾添加一个换行符,或者另一种更简单的方法,以便逐行打印结果?提前致谢 [["Mon Nov 1 21:38:11 NZDT 2021", "webserver", "2.32%", "0.90%", "running", "healthy"], ["Mon Nov 1 21:38: 21 NZDT 2021", "webserver", "0.00%", "0.84%", "running", "healthy"],
    • 我编辑了,现在可以了吗?
    • 谢谢,利马。效果很好。
    猜你喜欢
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 2021-06-13
    • 2017-09-19
    • 1970-01-01
    相关资源
    最近更新 更多