如何使用Python实现在网页中与数据库进行交互(将表格通过网页上传到数据库中,从数据库中获取数据)? |
您所在的位置:网站首页 › pandas模块中read_excel方法的功能 › 如何使用Python实现在网页中与数据库进行交互(将表格通过网页上传到数据库中,从数据库中获取数据)? |
想必在工作中很多朋友都曾作为一个组织者通过表格需要收集一些信息时,通过邮件收发费时费力,有没有一种很好的方法,通过网页就可以将大家要上传的表格进行收集并集中起来呢? 本文就即将介绍一种快捷的方法帮助您通过网页快速收集表格,达到自动化办公的效果,让您更快下班! 通过阅读本文,您将学到如下几项技能: (1)利用Python搭建自己的交互式网页 (2)掌握python读取表格的方法(含pandas的用法) (3)利用df.to_sql实现将表格用1行代码上传到数据库的方法 (4)连接数据的2种不同的方法 (5)sql语句的写法 本文介绍的内容分为3部分: 第一部分:网页上传组件 第二部分:上传到数据库 第三部分:从数据库拉取数据进行验证是否上传成功 效果图如下: ![]() 想知道是如何实现的吗?且听我慢慢道来 为了实现上述效果图,我们需要安装几个python库 pip install streamlit #构建web网页的基础模块 pip install pandas #读取表格的模块1 pip install xlrd #读取表格的模块2 pip install streamlit-aggrid #在网页中显示表格的模块 pip install pymysql #连接数据库的模块1 pip install sqlalchemy #连接数据库的模块2如何加快在国内下载模块的速度呢? 先打开cmd窗口复制如下代码并点击回车键Enter运行即可,然后再依次执行上述的安装命令 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple本次文章中介绍的完整代码,已在python 3.8.3环境下进行过验证,可以直接复制使用 程序运行方法:将如下代码保存为:test.py,然后在对应的目录下打开cmd窗口,输入魔法命令:streamlit run test.py,然后输入回车,遇到输入邮箱部分,随便输入一个地址即可,然后浏览器就会自动打开运行并显示出上传部分的界面了 # -*- coding: utf-8 -*- import streamlit as st from st_aggrid import AgGrid import pandas as pd import pymysql from sqlalchemy import create_engine engine = create_engine('mysql+pymysql://root:abcde@localhost/python?') uploaded_file = st.file_uploader("请选择要上传的xls格式表格!") if uploaded_file is not None: df1 = pd.read_excel(uploaded_file) AgGrid(df1) df1.to_sql(name=str(uploaded_file.name).replace(".xls",""), con=engine, chunksize=1000, if_exists='replace', index=None) st.success("上传成功!") db = pymysql.connect(host="localhost", user="root", password="abcde", database="python", charset="utf8") sql="select * from "+str(uploaded_file.name).replace(".xls","") cursor = db.cursor() cursor.execute(sql) db.commit() df2=pd.read_sql(sql,con=db) st.success("数据库中的表格内容如下") st.dataframe(df2) else: st.warning("请上传xls表格!")如下为代码解释部分: 1.engine = create_engine('mysql+pymysql://root:abcde@localhost/python?charset=utf8') 这一句的作用是构建数据库连接引擎,root为数据库用户名,abcde为数据库密码,localhost为数据库地址,如果有固定IP,请将localhost更换成固定IP,python为数据库名,charset=utf8意思是设定数据库要支持中文显示 2.uploaded_file = st.file_uploader("请选择要上传的xls格式表格!") 这个是表格的上传组件,见效果页面的最上方部分,标准写法,大家可以更改双引号内部的内容 3.整个程序采用if---else框架编写,当页面检测到用户没有上传表格时,在页面下方用黄颜色告警提示用户需要上传表格,对应代码中的:st.warning("请上传xls表格!") 4.数据表格上传到页面的显示部分,采用了from st_aggrid import AgGrid语句引入的AgGrid,这个模块可以轻松用1行代码将dataframe数据转化为表格并在网页中显示出来 对应程序中的代码为: df1 = pd.read_excel(uploaded_file) AgGrid(df1) 5.怎么将pandas读取的dataframe数据上传到指定的python数据库中呢? 使用这一段代码: df1.to_sql(name=str(uploaded_file.name).replace(".xls",""), con=engine, chunksize=1000, if_exists='replace', index=None) 其中name字段指定了上传到数据库中后对应的表格名字,str(uploaded_file.name).replace(".xls","")可以实现自动获取用户上传的表格名称并使用字符串的replace方法去除文件后缀,也就是将表格的名字作为数据库中的表名利用起来了 con指定了数据库连接引擎 if_exists确定了上传模式,这里采用的是replace方法,也就是替换方法,当表格上传后,如果数据库中存在相同内容,则执行替换操作;如果你需要在原来的表格上进行追加写入,可以将replace更换为append6.如何验证表格中的数据是否已经成功上传到数据库中了呢? 我们采用如下的代码进行验证 db = pymysql.connect(host="localhost", user="root", password="abcde", database="python", charset="utf8") sql="select * from "+str(uploaded_file.name).replace(".xls","") cursor = db.cursor() cursor.execute(sql) db.commit() df2=pd.read_sql(sql,con=db) st.success("数据库中的表格内容如下") st.dataframe(df2)其中db为pymysql模块的数据库连接引擎 sql为标准的sql语句,意思是从上传的表格中将全部的数据读取出来 cursor = db.cursor() cursor.execute(sql) db.commit() 这3句的作用是将sql提交给数据进行执行 df2=pd.read_sql(sql,con=db)的作用是将读取到的内容变成dataframe st.dataframe(df2)这一句的作用是将dataframe在网页中显示出来 本文中使用的数据库是Mariadb,关于如何搭建自己的Mariadb数据库,见作者如下视频 如果您还想多了解一些数据库或Mysql相关的内容,可以买如下推荐的书籍进行学习 如果有不懂或者更好的创意,欢迎在下方评论区与我互动哦,谢谢! |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |