纯Python搭建数据库查询网站实践

纯Python搭建数据库查询网站实践,第1张

概述是的,纯Python!不用html,不用css,不用javascript…以及多如牛毛汗牛充栋各种牛逼闪亮的前端技术,100%python可以搭建一个数据库查询网站。用Streamlit可以做到!另外只用了numpy和sqlite,代码不到60行,其中还包含几行防注入攻击的代码。Streamlit官网的文档也太过于简略了,网上资料

是的,纯Python!
不用HTML,不用CSS,不用java script…以及多如牛毛汗牛充栋各种牛逼闪亮的前端技术,100%python可以搭建一个数据库查询网站。
用Streamlit可以做到!另外只用了numpy和sqlite,代码不到60行,其中还包含几行防注入攻击的代码。Streamlit官网的文档也太过于简略了,网上资料又比较少,所以特此分享。
该案例已经过简化,在本地跑没问题,做过验证。待有时间把它部署到网上,届时再和大家分享部署的心得。

界面是这样式儿滴:


数据库检索结果呈现:

代码是这样式儿滴:

#Coding:utf-8import streamlit as stimport numpy as npimport sqlite3class query:    def __init__(self,cas_number):        self.__casno=cas_number    def Casnumberquery(self):        result_List_0=[]        row=0        cas_query_0='''SELECT ori_sn,casno,cnname,enname,remark,legID FROM CNOTHERS WHERE casno='CAS_X';'''        cas_query_1=cas_query_0.replace('CAS_X',str(self.__casno))        result_0=chemicals.execute(cas_query_1)        for chem in result_0:#解包到列表中            result_List_0.append(chem[5])        result_set_0=set(result_List_0)#转换列表为集合(可去重)        if len(result_set_0)==0:#如果列表为空,意味着未检索到结果            return None        else:            leg_query='''SELECT leg_cn,leg_en,pub_date FROM CNLAWS WHERE legID='LEG_X';'''            leg_arr=np.empty((len(result_set_0)+1,3),object)#为储存查询结果,预制了一个空数组            leg_arr[0,:]=(['法规中文名称','English Title','发布日期'])#标题列            for leg_ID in result_set_0:#将数据库检索结果写入数组                leg_query_1=leg_query.replace('LEG_X',leg_ID)                leg_result_1=chemicals.execute(leg_query_1).fetchone()                row+=1                leg_arr[row,:]=([leg_result_1[0],leg_result_1[1],leg_result_1[2]])            return leg_arr#返回数组def findillegalchar(casnum):    '''    检验查询输入字符,防止注入攻击    '''    safetynum=['0','1','2','3','4','5','6','7','8','9','-']    for char in casnum:        if char not in safetynum:                        return charst.Title('化学品关联法规查询')warehouse=sqlite3.connect(r'C:\chemicals\chem2reg\cisdatabase.db') chemicals=warehouse.cursor()whichcasno=st.text_input('Enter CAS number', value='', max_chars=None, key=None, type='default', help='CAS号形如1336-21-6')if whichcasno!='':    if findillegalchar(whichcasno):        st.write(whichcasno,'包含非法字符:',findillegalchar(whichcasno))    else:        st.write(whichcasno,'的关联法规为:')        query_test=query(whichcasno)        df_result_0=query_test.Casnumberquery()        if df_result_0 is not None:            st.dataframe(data=df_result_0)         else:            st.write('oops!未检索到关联法规数据')

以上代码的注释应该是比较明了的,如果有问题请留言,必知无不言。

作为业外人士,说句搓火的话,我觉得大牛都是在后端,不屑于做前端。所以直到今天,前端技术乱七八糟的,也没个人一统江湖。话说回来,赚钱还是前端赚钱,不过也都是辛苦钱。

Streamlit仍在发展中,盼望功能早日更加强大。

总结

以上是内存溢出为你收集整理的纯Python搭建数据库查询网站实践全部内容,希望文章能够帮你解决纯Python搭建数据库查询网站实践所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1187310.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存