最佳的Python表格实现方式是什么?

3

有没有关于如何在Python中实现表格(即小型关系数据库)的最佳方法,而不使用任何外部数据库额外模块和当sqlite3模块损坏或缺失时的想法。

user:~ $ python3
>>> import sqlite3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/bns/rma/local/python/lib/python3.1/sqlite3/__init__.py", line 24, in <module>
    from sqlite3.dbapi2 import *
  File "/bns/rma/local/python/lib/python3.1/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ImportError: No module named _sqlite3
>>> ^D
user:~ $ python2.7
Python 2.7 (r27:82500, Jul 28 2010, 11:39:31)
[GCC 3.4.3 (csl-sol210-3_4-branch+sol_rpath)] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/dcottr/local/lib/python2.7/sqlite3/__init__.py", line 24, in <module>
    from dbapi2 import *
  File "/home/dcottr/local/lib/python2.7/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ImportError: No module named _sqlite3
>>>

您需要更好地描述您的需求。 - Björn Pollex
1
@sqace_cowboy:在没有sqlite3的破损系统上快速实现一些小功能。我认为解决方案如下... - mathtick
接受了一个不完整的答案,忽略了正确的答案,甚至没有去谷歌一下(Python模块名是sqlite3,而不是sqlite,如果搜索“python sqlite”,就会知道)。-1分,连尝试都没有。 - Glenn Maynard
@Glenn Maynar...我知道sqlite3和python模块。我在家里用它。但是在这里(指特定情况),它出了问题。我试图在截止日期前找到一个解决方法。我和你一样感到沮丧,但当我说“不使用sqlite3”时,说“使用sqlite3”并不是一个解决方案。这就是为什么我接受简单的解决方案作为没有其他简单事情可做的证据。请在提供负面回复之前阅读完整的帖子。如果我误解了您的评论,请纠正我。 - mathtick
当我发表评论时,您正在执行“import sqlite”,而不是“import sqlite3”,并且在我发表评论后进行了编辑。我建议在运行的系统上本地重新编译Python,并将生成的“_sqlite3.so”复制到Python搜索路径中的本地模块目录中以修复它。即使您没有root访问权限,也应该能够以这种方式放置一个修复后的sqlite3模块。 - Glenn Maynard
是的,我想那是真的...虽然我记得(从记忆中)sqlite也可以在我家运行的Python中使用。是的,我一直在尝试重新编译本地的python3,但遇到了其他问题。我应该删除这篇文章,因为我希望没有人会面临这些烦人的问题,并且能够依靠sqlite3与小型数据库进行交互。好的是,现在我感觉更有正义感,推动安装一个完全功能的Python。没有sqlite3相当荒谬。 - mathtick
3个回答

14

使用sqlite3

  • 它与Python一起提供,不需要外部数据库或额外的模块。
  • 它可以在内存中创建整个数据库。如果您不想要额外的磁盘文件,则不需要。
  • 速度非常快。
  • 它可以对表执行现代查询,例如JOIN

没有理由不使用它。它将比您自己开发的任何解决方案更快,更完整。


1
稍微说明一下,只要你在SQLite的设计范围内运用它,它就非常快速。如果你尝试在一个SQLite数据库上使用多个写入者,你会哭着入睡,而且由于其SQL规划器不是很高级,它并不总是能够快速处理复杂查询。话虽如此,SQLite是全球部署最广泛的数据库软件,几乎肯定是OP想要的。 - Glenn Maynard
sqlite3模块是Python自带的吗?但这需要sqlite3,而它不是标准的,对吧?无论哪种情况,这里安装的任何Python版本(2.4.2.7 3.0)都没有可用的sqlite、sqlite3或_sqlite3.so。世界是一个美丽的地方。 - mathtick
@S.Lott...抱歉,这应该是Python版本2.4、2.7和3.1.2。 - mathtick
所以我认为3.1.2是最新的Python版本,但安装时出现了某种病态问题。 - mathtick

4
你可以将表格基本上表示为一个列表的列表/元组。然后你可以使用字典来表示索引。
你会在表格中进行查询,还是只是“拥有”它的表示形式?你需要这个做什么?

谢谢。我将进行一些查询。我认为拥有一个字典列表可能是有意义的。然后,我可以使用类似于 [ x for x in data if condition(x)==True ] 的东西简单地查询事物。这不应该太糟糕。我只是想在浪费时间尝试修复 Python 和数据库安装问题之前先完成一些工作。 - mathtick

2

自2.5版本以来,Python支持Sqlite。它非常轻量级且不需要外部依赖。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接