如何为报告仪表板设置数据库

时间:2020-04-27 18:53:40

标签: python html sql database csv

我是一位非常新手的Web开发人员,目前正在从头开始构建网站。我已经完成了大部分前端部分的设置,但是我真的在后端和数据库方面苦苦挣扎。

网站的重点是显示带有班级完成状态的图表(对于每个班级,它将显示完成/未完成的百分比以及总用户数)。它将从SFTP服务器上的CSV文件中检索此数据。我遇到的问题是,当我尝试直接访问数据时,加载速度非常慢。

这是我用来检索数据的代码:

Courses = ['']
Total =[0]
Compl =[0]
csvreal = pandas.read_csv(file)
for index, row in csvreal.iterrows():
    string =(csvreal.loc[[index]].to_string(index=False, header=False))
    if(Courses[i] !=string.split('  ')[0]):
        i+=1
        Courses.append(string.split('  ')[0])
        Total.append(0)
        Compl.append(0)
    if(len(string.split('  ')[2])>3):
        Compl[i]+=1
    Total[i]+=1

为了稍微说明一下,CSV文件包含花名册信息,即每一行都有课程名称,用户名称,完成日期和课程代码。课程名称是第一列,因此这就是为什么在代码中看到string,split('')[0],因为它是字符串的第一部分。如果用户完成了此操作,则第三列(完成日期)为空,这就是为什么它检查它是否长于3个字符的原因,因为如果是3个字符,则表明用户已经完成了它。

这花费了太长时间来计算。大约7,000个条目,大约30秒。最近,CSV大小增加到了36,000。

建议我使用SQL设置数据库,每晚进行一次cronjob来解析数据,并让网站从数据库而不是CSV中检索数据。

对于从何处开始或如何执行此操作的任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

这花费了太长时间来计算。大约7,000个条目,大约30秒。最近CSV大小增加到了36,000。

建议我使用SQL设置数据库,并每晚进行一次cronjob解析数据,并让网站从数据库而不是CSV中检索数据。

在我建议使用数据库之前,要从中获取数据的SFTP服务器的连接速度有多快?将其托管在本地计算机上会更快吗?如果这不是问题,请参见下文。

是的,在这种情况下,数据库将加快您的计算时间和检索时间。您需要设置一个SQL数据库,有一种方法可以将数据放入其中,然后再检索它。我在底部提供了有助于熟悉SQL的资源。为了与数据库交互和操作,将需要PHP的知识。

使用SQl将使您更轻松地进行交互。例如,您需要检查一个单元格是否为空。在SQL中,可以通过以下方式完成:

SELECT * FROM table WHERE some_col IS NULL OR some_col = '';

https://www.khanacademy.org/computing/computer-programming/sql

https://www.w3schools.com/sql/

https://www.guru99.com/introduction-to-database-sql.html

相关问题