【发布时间】:2021-08-24 18:08:09
【问题描述】:
from logging import StreamHandler, exception
from sqlalchemy import create_engine
from re import search
from pandas._config.config import options
from pandas.core.frame import DataFrame
from pandas.core.tools import numeric
import streamlit as st
import plotly.express as pt
import pandas as pd
import numpy as np
import os
import base64
#function
def filedownloader(database):
csv = database.to_csv(index=False)
b64 = base64.b64encode(csv.encode()).decode()
href = f'<a href="data:file/csv;base64,{b64}">Download csv file</a>'
st.markdown(href,unsafe_allow_html=True)
return href
#basic titles
st.title("Institution's Section")
st.sidebar.subheader("Settings")
# file uploader
fl=st.sidebar.file_uploader(label="Uplaod File in csv or xlsx format", type=['csv','xlsx'])
global df
if fl is not None:
st.title("Performance Graph")
try:
df=pd.read_csv(fl)
except Exception as e:
print(e)
df=pd.read_excel(fl)
#write table in web page
global columns
try:
st.write(df)
columns = list(df.columns)
except Exception as e:
print(e)
st.write("Please upload a file")
#Chart select
st.sidebar.subheader("Analysis section")
ch=st.sidebar.selectbox(
label="Select the chart type",
options=['Scatterplots','Lineplots','Histogram','Boxplot'],
key="chart"
)
#Plot Settings
if ch =='Scatterplots':
st.sidebar.subheader("Scatterplot Settings")
try:
x_values=st.sidebar.selectbox('X axis',options=columns)
y_values=st.sidebar.selectbox('Y axis',options=columns)
plot=pt.scatter(data_frame=df,x=x_values,y=y_values)
st.plotly_chart(plot)
except Exception as e:
print(e)
elif ch=='Lineplots':
st.sidebar.subheader("Lineplot Settings")
try:
x_values=st.sidebar.selectbox('X axis',options=columns)
y_values=st.sidebar.selectbox('Y axis',options=columns)
plot=pt.line(data_frame=df,x=x_values,y=y_values)
st.plotly_chart(plot)
except Exception as e:
print(e)
elif ch=='Histogram':
st.sidebar.subheader("Histogram Settings")
try:
x_values=st.sidebar.selectbox('X axis',options=columns)
y_values=st.sidebar.selectbox('Y axis',options=columns)
plot=pt.histogram(data_frame=df,x=x_values,y=y_values)
st.plotly_chart(plot)
except Exception as e:
print(e)
elif ch=='Boxplot':
st.sidebar.subheader("Boxplot Settings")
try:
x_values=st.sidebar.selectbox('X axis',options=columns)
y_values=st.sidebar.selectbox('Y axis',options=columns)
plot=pt.box(data_frame=df,x=x_values,y=y_values)
st.plotly_chart(plot)
except Exception as e:
print(e)
#rank select
st.sidebar.subheader("Quick Search Rank")
radio=st.sidebar.radio(
"What you want to see?",("Top five","Bottom five")
)
#rank settings
numeric_column = df.select_dtypes(include=np.number).columns.tolist()
if(radio=='Top five'):
st.sidebar.subheader("Rank Settings")
try:
val=st.sidebar.selectbox('Select rank category',options=numeric_column)
st.title("Quick Search Result")
st.write(df.nlargest(5,val))
except Exception as e:
print(e)
elif(radio=='Bottom five'):
st.sidebar.subheader("Rank Settings")
try:
val=st.sidebar.selectbox('Select rank category',options=numeric_column)
st.title("Quick Search Result")
st.write(df.nsmallest(5,val))
except Exception as e:
print(e)
#search
st.sidebar.subheader("Search")
val=st.sidebar.selectbox('Search desired column',options=columns)
st.sidebar.subheader("Search keyword")
user_input = st.sidebar.text_area("Type Keyword here", 0)
try:
dl = df[df[val] == type(df[val][1])(user_input)]
except Exception as e:
pass
st.sidebar.subheader("Custom plot settings")
choose=st.sidebar.selectbox(
label="Choose plot for selected data",
options=['Scatterplot','Linearplot','Histogram','Boxplot',]
)
if(choose == 'Scatterplot'):
try:
st.sidebar.subheader("Scatterplot Settings")
x_val=st.sidebar.selectbox('X axis',options=columns,key="scatter_x")
y_val=st.sidebar.selectbox('Y axis',options=columns,key="scatter_y")
plots=pt.scatter(data_frame=dl,x=x_val,y=y_val)
except Exception as e:
pass
elif (choose == 'Linearplot'):
try:
st.sidebar.subheader("Scatterplot Settings")
x_val=st.sidebar.selectbox('X axis',options=columns,key="scatter_x")
y_val=st.sidebar.selectbox('Y axis',options=columns,key="scatter_y")
plots=pt.line(data_frame=dl,x=x_val,y=y_val)
except Exception as e:
pass
elif (choose == 'Histogram'):
try:
st.sidebar.subheader("Scatterplot Settings")
x_val=st.sidebar.selectbox('X axis',options=columns,key="scatter_x")
y_val=st.sidebar.selectbox('Y axis',options=columns,key="scatter_y")
plots=pt.histogram(data_frame=dl,x=x_val,y=y_val)
except Exception as e:
pass
elif (choose == 'Boxplot'):
try:
st.sidebar.subheader("Scatterplot Settings")
x_val=st.sidebar.selectbox('X axis',options=columns,key="scatter_x")
y_val=st.sidebar.selectbox('Y axis',options=columns,key="scatter_y")
plots=pt.box(data_frame=dl,x=x_val,y=y_val)
except Exception as e:
pass
#chart and search button
bt=st.sidebar.button("Search and Apply")
if(bt):
st.title("Search Results")
st.write(dl)
st.title("Searh Analysis")
st.plotly_chart(plots)
#Modify database
st.sidebar.subheader("Select Column to drop null values")
val1=st.sidebar.multiselect(
label="Selet Columns",
options=columns
)
bt_null_r=st.sidebar.button("Drop Null values")
if(bt_null_r):
mdf=df.dropna(subset=val1, how='all')
filedownloader(mdf)
# drop selected column
st.sidebar.subheader("Select Column to drop null values")
val2=st.sidebar.multiselect(
label="Selet Columns",
options=columns,key="column_multi"
)
bt_c=st.sidebar.button("Drop Columns")
if(bt_c):
mdf=df.drop(val2,axis=1)
filedownloader(mdf)
**#creating sql engine
engine=create_engine('mysql://root:Soumik18@@localhost:3306/college')
df.to_sql('Students',con=engine)**
我可能哪里出错了?我正在将 MySQL 与 Heidi SQL 一起使用。在最后两行中,我使用的是 SQL 代码,我的本地主机分配给 127.0.0.1,端口为 3306,密码是 Soumik18@。我能做什么?
我收到此错误:
OperationalError: (MySQLdb._exceptions.OperationalError) (2005, "Unknown MySQL server host '@localhost' (11003)") (此错误的背景:http://sqlalche.me/e/14/e3q8)
【问题讨论】:
-
你试过连接字符串中的
quote_plus('YOUR_PASSWORD')吗?'mysql://%s:%s@localhost:3306/college' % (quote_plus(USERNAME), quote_plus(PASS))? docs.python.org/3.1/library/…
标签: python mysql mysql-connector-python streamlit