csv 字符串_使用Python瓶从MySQL数据库生成CSV报告

7ed45b64-1a0d-4a62-af70-8efa7239ad32

导言

在这里,我将向您展示如何使用PythonFlask从MySQL数据库生成CSV报告。我们将创建一个使用轻量级Web框架的Web应用程序,名为Flask。我们将从这个Web应用程序中的MySQL数据库中动态生成CSV(逗号分隔值)文件。下载链接将提供在前端或用户界面上,最终用户将点击,并将获得一个选项,以保存生成的CSV文件,根据他们选择的位置。

入门Python其实很容易,但是我们要去坚持学习,每一天坚持很困难,我相信很多人学了一个星期就放弃了,为什么呢?其实没有好的学习资料给你去学习,你们是很难坚持的,这是小编收集的Python入门学习资料关注,转发,私信小编“01”,即可免费领取!希望对你们有帮助

b7de52b9ff2344cc88a3bc0f2a0547e3

我们要用csv用于生成CSV报告的API。因为我们没有在服务器的物理位置保存这个CSV报告,所以我们需要将数据写入一个字符串。因此,我们将在这里使用ioPython 3中的包。

为什么我们需要CSV数据?

使用CSV数据的其他原因可能有很多,但主要原因如下:

  • csv格式被认为是标准格式。
  • CSV体积较小,处理速度更快。
  • CSV实现简单,易于解析。
  • CSV是人类可读的,易于手工编辑。
  • 几乎所有的申请都会处理csv。

先决条件

Python 3.8.0,Flask 1.1.1,MySQL 8.0.17

创建MySQL表

因为我们要从MySQL数据库生成CSV报告,所以我们需要一个表和这个表中的数据才能从表中生成报告。

我们将创建一个Employee表并将一些示例数据转储到其中。

CREATE TABLE IF NOT EXISTS `employee` ( `emp_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `emp_first_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `emp_last_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `emp_mgr_id` int(11) DEFAULT NULL, `emp_designation` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`emp_id`)) ENGINE=InnoDB AUTO_INCREMENT=7975 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;INSERT INTO `employee` (`emp_id`, `emp_first_name`, `emp_last_name`, `emp_mgr_id`, `emp_designation`) VALUES(7369, 'SMITH', 'JHON', 7902, 'CLERK'),(7499, 'ALLEN', 'BORDER', 7698, 'SALESMAN'),(7521, 'WARD', 'SPACE', 7698, 'SALESMAN'),(7654, 'MARTIN', 'FOWLER', 7698, 'SALESMAN'),(7698, 'BLAKE', 'RAY', NULL, 'MANAGER'),(7782, 'CLARK', 'MICHAEL', NULL, 'MANAGER'),(7788, 'SCOTT', 'TIGER', 7566, 'ANALYST'),(7839, 'KING', 'ROY', NULL, 'VICE PRESIDENT'),(7844, 'TURNER', 'RICK', 7698, 'SALESMAN'),(7876, 'ADAMS', 'EVE', 7788, 'CLERK'),(7900, 'JAMES', 'BOND', 7698, 'CLERK'),(7902, 'FORD', 'LAMBDA', 7566, 'ANALYST'),(7934, 'MILLER', 'JOHN', 7782, 'CLERK'),(7954, 'FRANK', 'JOHN', 7782, 'MANAGER'),(7964, 'MARTIN', 'HIKMAN', NULL, 'CLERK'),(7974, 'APRIL', 'HICKMAN', 7782, 'SALESMAN');

创建项目目录

创建一个名为Python-烧瓶-MySQL-CSV-报告根据你选择的地点。

在后面的部分中,我们可能不会提到项目的根目录名称,但是我们将假设我们正在创建有关项目根目录的文件。

配置瓶

我们在这里通过烧瓶框架配置应用程序。创建一个名为app.py下面的代码。

from flask import Flaskapp = Flask(__name__)

数据库配置

我们创建以下内容db.pyPython脚本来设置MySQL数据库配置,用于连接数据库并将用户信息存储到雇员表下王权数据库。

我们需要配置与烧瓶模块的数据库连接,这就是为什么我们要导入APP模块,并使用烧瓶模块设置MySQL配置。

确保根据数据库设置更改数据库配置值。

from app import appfrom flaskext.mysql import MySQLmysql = MySQL() # MySQL configurationsapp.config['MYSQL_DATABASE_USER'] = 'root'app.config['MYSQL_DATABASE_PASSWORD'] = 'root'app.config['MYSQL_DATABASE_DB'] = 'roytuts'app.config['MYSQL_DATABASE_HOST'] = 'localhost'mysql.init_app(app)

配置URL和检索记录

现在,我们将配置用于呈现前端或UI模板文件的URL,这些URL将显示给最终用户。

我们还将从mysql数据库表中检索数据。雇员并写入可下载的CSV文件。

创建一个名为Python的脚本main.py使用以下源代码。

import ioimport csvimport pymysqlfrom app import appfrom db import mysqlfrom flask import Flask, Response, render_template@app.route('/')def download():return render_template('download.html')@app.route('/download/report/csv')def download_report():conn = Nonecursor = Nonetry:conn = mysql.connect()cursor = conn.cursor(pymysql.cursors.DictCursor)cursor.execute("SELECT emp_id, emp_first_name, emp_last_name, emp_designation FROM employee")result = cursor.fetchall()output = io.StringIO()writer = csv.writer(output)line = ['Emp Id, Emp First Name, Emp Last Name, Emp Designation']writer.writerow(line)for row in result:line = [str(row['emp_id']) + ',' + row['emp_first_name'] + ',' + row['emp_last_name'] + ',' + row['emp_designation']]writer.writerow(line)output.seek(0)return Response(output, mimetype="text/csv", headers={"Content-Disposition":"attachment;filename=employee_report.csv"})except Exception as e:print(e)finally:cursor.close() conn.close()if __name__ == "__main__": app.run()

在上面的Python脚本中,download()函数在UI上呈现模板页。

这个download_report()函数从雇员桌子。

然后写入CSV字符串并最终发送Response作为文件附件。文件名为雇员报告 .

最后,用户可以选择保存CSV文件。

模板文件

模板或视图文件保存在模板目录。模板是Flask框架中的标准目录,您需要在其中放置视图或模板文件。

Python Flask File Generate CSV Report from MySQL

Generate CSV Report from MySQL

Generate CSV Report

此视图页面显示有一个链接,单击该链接将生成CSV文件,并要求用户保存该文件。

测试应用

现在导航到项目根目录并执行以下命令python main.py或者简单的main.py,您的服务器将在默认端口上启动。5000 .

如果要更改端口,则可以更改行。app.run()到app.run(port=5001),在哪里5001是新的港口。

使用http://localhost:5000将提供以下输出:

c6447fad31fa4d35a7bf32e25f6e6699

现在您可以单击链接生成CSV报告并保存生成的CSV文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值