Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用CSV作为可变数据库?_Python_Csv - Fatal编程技术网

Python 使用CSV作为可变数据库?

Python 使用CSV作为可变数据库?,python,csv,Python,Csv,是的,这种情况听起来很愚蠢。由于一些非常烦人的托管限制和无响应的技术支持,我不得不使用CSV文件作为数据库 虽然我可以将MySQL与PHP结合使用,但由于主机的安装问题,我无法将它与程序的Python后端结合使用。我不能将SQLite与PHP一起使用,因为还有更多的安装问题,但可以使用它,因为它是Python内置的 不管怎样,现在的问题是:是否可以在CSV数据库中以SQL方式更新值?还是我应该继续打电话给服务台?我会继续打电话给服务台。如果CSV是关系型数据,您就不想使用它。这将是一场噩梦 继续

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

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


不管怎样,现在的问题是:是否可以在CSV数据库中以SQL方式更新值?还是我应该继续打电话给服务台?

我会继续打电话给服务台。如果CSV是关系型数据,您就不想使用它。这将是一场噩梦

继续呼叫服务台


虽然您可以使用CSV作为数据库,但这通常不是一个好主意。您必须实现自己的锁定、搜索、更新,并非常小心地写出它,以确保在断电或其他异常关机时不会删除它。除非您自己编写,否则将不会有任何事务,也不会有任何查询语言等。

不要走,立即跑去获取新主机。如果您的主机甚至无法为您提供最基本的免费数据库,那么是时候进行更改了。海里有许多鱼


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

我无法想象这是一个好主意。我继承的当前混乱将重要的账单信息写入CSV,并在项目完成后进行更新。它运行得很糟糕,每个月损失数千美元。对于目前的限制,我会考虑找到更好的主机。

看看这个:

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

你可以使用sqlite3来创建更真实的数据库。很难想象托管不允许您将其作为python模块安装


甚至不要考虑使用CSV,你的数据会比你说的“s#&t”更快地被破坏和丢失。

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

你能进一步解释一下吗?也许您可以将xml rpc或普通http请求与xml/json/…一起使用。。。让php程序与python程序通信(或者其他方式?),这样只有一个程序直接访问数据库

如果不是这样,我不确定问题出在哪里。

“不管怎样,现在的问题是:是否可以在CSV数据库中更新SQL样式的值?”

从技术上讲,这是可能的。然而,这可能很难

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

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

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

  • 使用相同的文件并实际使用一些操作系统锁定模块。两个进程都会始终打开文件

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

  • 或者


    您可以重新构建它,以便只有Python编写该文件。前端在文件更改时读取该文件,并删除一些事务文件以创建Python的工作队列。在这种情况下,你没有多个作者——你有一个读者和一个作者——生活要简单得多。

    这在技术上是可能的。例如,Perl提供了一个在CSV文件上运行SQL查询的驱动程序


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

    postgresql呢?我发现这非常好用,python很好地支持它


    但我真的会寻找另一个提供者,除非它真的不是一个选项。

    与noble的同事不同,我经常使用Perl中的DBD::CSV。有充分的理由这样做。最重要的是使用电子表格简化数据更新。另外,由于我使用的是SQL查询,因此应用程序可以轻松升级到真正的数据库引擎。请记住,这些数据库在单用户应用程序中非常小


    因此,重新表述一下这个问题:是否有一个python模块与Perl的DBD:CSV等效?相信我,我肯定在研究它。主机在大多数方面都很好,除了一个小问题,即他们提供的脚本语言中有一半不支持DBs,而另一半不支持DBs……正如大家推荐的那样,我正在尽可能快地寻找一台新主机。这是一个很好的权宜之计,以防事情不顺利。谢谢