python数据库/ sql编程 - 从哪里开始

Aym*_*man 7 python database sqlite ado

使用嵌入式数据库的最佳方法是什么,比如Python中的sqlite:

  1. 应占地面积小.我每张桌子只需要几千条记录.每个数据库只有少数几个表.
  2. 如果它是由Python默认安装提供的那个,那么很棒.必须是开源的,可在Windows和Linus上使用.
  3. 如果不直接编写SQL,但完全不需要ORM,则更好.有些东西可以保护我免受实际数据库的影响,但不是那么庞大的库.与ADO类似的东西会很棒.
  4. 大多数将通过代码使用,但如果有一个GUI前端,那就很好
  5. 只需几页即可开始使用.我不想浏览页面读取表格以及Select语句的工作原理.我知道这一切.
  6. 支持Python 3是首选,但2.x也可以.

用法不是网络应用程序.它是一个小型数据库,最多可容纳5个表.每个表中的数据只是几个字符串列.想想比腌制词典更大的东西

更新:非常感谢您提出的好建议.
我正在谈论的用例非常简单.你可能会在一两天内做一件事.
这是一个100行的Python脚本,它收集有关相对大量文件(比如10k)的数据,并创建关于它们的元数据文件,然后创建一个关于整个文件树的大型元数据文件.我只需要避免重新处理已经处理的文件,并为更新的文件创建元数据,并更新主元数据文件.在某种程度上,缓存已处理的数据,并仅在文件更新时更新它.如果缓存已损坏/不可用,则只需处理整个树.可能需要20分钟,但没关系.

请注意,所有处理都在内存中完成.

我想避免任何外部依赖,以便脚本可以很容易地放在任何系统上,只需要安装Python.作为Windows,有时很难安装所有组件.因此,在我看来,即使是数据库也可能是一种过度杀伤力.

您可能不会启动Office Word/Writer来编写一个小型的帖子类型注释,同样我不愿意使用像Django这样的用例.

从哪儿开始?

ste*_*eha 6

我强烈建议使用好的ORM.当您可以使用Python对象来管理数据库行时,生活变得更加容易.

我是Django中ORM的粉丝.但这已经被推荐了,你说这太重了.

这让我只有一个ORM推荐:秋天.非常轻巧,适用于SQLite.如果你的嵌入式应用程序是多线程的,那么你绝对想要秋天; 它具有支持多线程SQLite的扩展.(完全披露:我写了这些扩展并贡献了它们.我在为RealNetworks工作时写了它们,我的老板允许我捐赠它们,所以公开感谢RealNetworks.)

秋天是用纯Python编写的.对于SQLite,它使用Python官方SQLite模块来执行实际的SQL内容.秋天本身的记忆足迹很小.

我不推荐APSW.以我的拙见,它并没有真正帮助你; 它只是提供了一种执行SQL语句的方法,让您掌握SQL的处理方式.此外,它支持SQLite的每个功能,甚至是您很少使用的功能,因此它实际上具有比Autumn更大的内存占用,而不是那么容易使用.


Aym*_*man 1

这是答案的集合,没有特定的顺序:

每个人都在推荐 ORM 层。如果您确实需要数据库,那么这是完全有道理的。嗯,这就是标题中所要求的:-)

  1. SQL炼金术
  2. 秋天
  3. Django ORM
  4. 使用SQLite官方支持Pysqlite
  5. 风暴
  6. 灵丹妙药
  7. 使用Python自带的Pickle就可以了

但我开始认为,如果内存数据库就足够了,并且仅在脚本中使用,而不是 Web 应用程序甚至桌面 GUI,那么选项 7 也是完全有效的,前提是不需要事务支持并且“数据库”完整性不是问题。