我正在使用Flask制作一个小型的Web应用程序来管理一个团队项目,在这个网站上,我需要管理出勤情况以及会议报告。由于没有时间学习SQLAlchemy,所以我想知道使用CSV作为数据库可能存在哪些问题。
我正在使用Flask制作一个小型的Web应用程序来管理一个团队项目,在这个网站上,我需要管理出勤情况以及会议报告。由于没有时间学习SQLAlchemy,所以我想知道使用CSV作为数据库可能存在哪些问题。
不要使用CSV作为后端,原因如下:
a、无法并发:这意味着当两个人同时访问您的应用程序时,无法确保他们不会干扰彼此,更改彼此的数据。使用CSV文件作为后端时,没有解决此问题的方法。
b、速度:每当您对CSV文件进行更改时,都需要重新加载整个文件。解析文件会消耗大量内存和时间。
数据库是为解决这些问题而创建的。
然而,我同意对于小型应用程序,您不需要学习SQLAlchemy。
有一些轻量级的替代方案值得考虑。
您要寻找的是ORM - 对象关系映射 - 它将Python代码转换为SQL,并为您管理SQL数据库。
PeeweeORM 和 PonyORM。两者都易于使用,并将所有SQL转换为Python,反之亦然。个人使用免费,但如果您将其用于商业目的,则Pony需付费。我强烈推荐PeeweeORM。您可以使用SQLite作为Peewee的后端,或者如果您的应用程序变得更大,可以轻松地插入MySQL或PostGreSQL。
我对于有多少人反对使用CSV作为数据库存储后端格式感到非常困惑。
并发性:没有理由不使用并发性与CSV。就像数据库线程可以同时写入二进制文件的一个区域,而另一个线程可以写入同一二进制文件的另一个区域一样。数据库可以用CSV文件做到完全相同的事情。就像日志用于维护单个事务的原子性一样,CSV也可以做到完全相同的事情。是的,如果您在电子表格程序中更改了CSV文件,则每次都必须重新索引它,但这与在索引/表损坏/删除/失去同步等情况下重新索引二进制数据库没有区别。