使用CSV作为可变数据库?

时间:2009-04-03 04:02:51

标签: python csv

是的,这听起来像是一种愚蠢的情况。由于一些非常烦人的托管限制和无响应的技术支持,我必须使用CSV文件作为数据库。

虽然我可以将MySQL与PHP一起使用,但由于主机的安装问题,我无法将其用于我的程序的Python后端。由于更多的安装问题,我不能将SQLite与PHP一起使用,但可以使用它,因为它是内置的Python。

无论如何,现在,问题是:是否可以在CSV数据库中更新SQL样式的值?或者我应该继续打电话给服务台吗?

12 个答案:

答案 0 :(得分:15)

不要走路,立即跑步以获得新主机。如果您的主机甚至不能为您提供最基本的免费数据库,那么现在是时候进行更改了。海里有很多鱼。

至少我建议使用xml数据存储而不是csv。 My blog使用xml数据提供程序,我根本没有任何性能问题。

答案 1 :(得分:3)

答案 2 :(得分:1)

继续致电服务台。

虽然您可以将CSV用作数据库,但这通常是一个坏主意。您必须实现自己的锁定,搜索,更新,并且非常小心如何写出来以确保在断电或其他异常关闭时不会擦除它。除非您自己编写等等,否则不会有交易,也不会有查询语言。

答案 3 :(得分:1)

我无法想象这是一个好主意。我继承的当前混乱将重要的计费信息写入CSV并在项目完成后更新它。它运行得非常糟糕,一个月错过了数千美元。对于你目前的限制,我会考虑找到更好的托管。

答案 4 :(得分:1)

你可以使用sqlite3来获得更真实的数据库。很难想象托管不允许你将它安装为python模块。

甚至不考虑使用CSV,您的数据会被破坏并丢失的速度比您说的“#& t”

更快

答案 5 :(得分:1)

“无论如何,现在,问题是:是否可以在CSV数据库中更新SQL样式的值?”

从技术上讲,这是可能的。但是,它可能很难。

如果PHP和Python都在编写文件,则需要使用操作系统级别的锁定来确保它们不会相互覆盖。系统的每个部分都必须锁定文件,从头开始重写所有更新,并解锁文件。

这意味着PHP和Python必须在重写之前将整个文件加载到内存中。

有几种方法可以处理操作系统锁定。

  1. 使用相同的文件并实际使用某些操作系统锁定模块。这两个进程始终打开文件。

  2. 写入临时文件并重命名。这意味着每个程序必须打开并读取每个事务的文件。非常安全可靠。有点慢。

  3. 或者

    您可以对其进行重新架构,以便只有Python才能写入文件。前端在更改时读取文件,并删除少量事务文件以创建Python的工作队列。在这种情况下,你没有多个作家 - 你有一个读者和一个作家 - 生活更加简单。

答案 6 :(得分:0)

我一直打电话给服务台。您想要将CSV用于数据(如果它完全是关系数据)。这将是噩梦。

答案 7 :(得分:0)

我同意。告诉他们5个随机的陌生人同意你被迫进入角落使用CSV是荒谬和不可接受的。

答案 8 :(得分:0)

如果我理解正确的话:你需要从python和php访问同一个数据库,你被搞砸了,因为你只能使用php中的mysql,而只能使用python中的sqlite?

你能进一步解释一下吗?也许你可以使用xml-rpc或普通的http请求和xml / json / ...来让php程序与python程序通信(或者反过来?),这样只有其中一个可以直接访问db。

如果不是这样,我不确定是什么问题。

答案 9 :(得分:0)

技术上可行。例如,Perl具有DBD::CSV,它提供了在CSV文件上运行SQL查询的驱动程序。

那就是说,为什么不在服务器上运行SQLite数据库?

答案 10 :(得分:0)

postgresql怎么样?我发现使用它非常好,而且python很好地支持它。

但我真的会寻找另一家提供商,除非它真的不是一种选择。

答案 11 :(得分:0)

不同意高贵的同事,我经常使用Perl的DBD :: CSV。这是有充分理由的。最重要的是使用电子表格使数据更新变得简单。作为奖励,因为我使用SQL查询,所以应用程序可以轻松升级到真正的数据库引擎。请记住,这些是单个用户应用程序中非常小的数据库。

重新解释这个问题:是否有一个与Perl的DBD相当的python模块:CSV