如何为报表面板设置数据库



我是一个非常新手的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文件有花名册信息,即每行都有课程名称、用户名称、完成日期和课程代码。课程名称是第一列,这就是为什么在代码中,您会看到字符串split(''([0],因为它是字符串的第一部分。如果用户完成了它,那么第三列(完成日期(是空的,所以这就是为什么它检查它是否长于3个字符,因为如果是,那么用户已经完成了它

这需要很长时间来计算。约30秒,约7000个条目。最近CSV的大小增加到大约36000。

有人建议我使用SQL建立一个数据库,并在夜间使用cronjob来解析数据,并让网站从数据库中检索数据,而不是CSV。

任何关于从哪里开始,或者如何做到这一点的建议都将不胜感激。

这需要很长时间来计算。约30秒,约7000个条目。最近CSV的大小增加到大约36000。

有人建议我使用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

最新更新