|
|
1
74
在内存中有一个需要查找、排序和任意聚合的“表”确实需要SQL。你说你尝试过sqlite,但是你意识到sqlite可以使用一个只在内存中的数据库吗?
然后,您可以在内存中创建/删除/查询/更新具有sqlite的所有功能的表,并且在完成后不会留下任何文件。从python 2.5开始,
下面是如何创建和填充数据库的示例:
如果您真的不喜欢使用SQL,您可能应该使用字典列表:
然后测试产生:
我个人更喜欢sqlite版本,因为它更好地保留了您的类型(在python中没有额外的转换代码),并且可以轻松地增长以适应未来的需求。不过,我还是很熟悉SQL,所以YMMV。 |
|
|
2
30
我知道一个很古老的问题,但是… 熊猫数据帧似乎是这里的理想选择。 http://pandas.pydata.org/pandas-docs/version/0.13.1/generated/pandas.DataFrame.html 从模糊中
|
|
|
3
16
我个人会使用行列表。因为每行的数据总是以相同的顺序排列,所以只需访问每个列表中的元素,就可以轻松地按任何列进行排序。您还可以根据每个列表中的特定列轻松计数,并进行搜索。它基本上和二维数组一样接近。 这里唯一的缺点是你必须知道数据的顺序,如果你改变了顺序,你必须改变你的搜索/排序程序来匹配。 你可以做的另一件事是列出字典。
这样就不需要知道参数的顺序,所以您可以查看列表中的每个“年份”字段。 |
|
|
4
6
有一个表类,其行是dict或更好的行对象列表 在表中不直接添加行,而是有一个更新少数查找映射的方法,例如,对于名称 如果没有按顺序添加行或ID不是连续的,也可以使用IDMAP。 例如
|
|
5
5
首先,考虑到您有一个复杂的数据检索场景,您确定甚至连sqlite都是杀伤力过度的吗? 最后,您将得到一个特别的、非正式指定的、bug重重的、半个sqlite的缓慢实现、改写 Greenspun's Tenth Rule . 也就是说,您说选择一个数据结构将影响一个或多个搜索、排序或计数,这是非常正确的,因此,如果性能是最重要的,并且数据是恒定的,则可以考虑为不同的目的使用多个结构。 最重要的是,衡量哪些操作更为常见,并决定哪种结构最终成本更低。 |
|
6
2
我最近亲自写了一个lib,叫做bd_xml。作为存在的最基本原因,它是在XML文件和SQL数据库之间来回发送数据的一种方式。 它是用西班牙语写的(如果这在编程语言中很重要的话),但它非常简单。
它定义了一个名为taba(table)的对象,可以用一个名称来创建它,以标识PEP-246兼容数据库接口的预先创建的连接对象。
然后需要添加列
像:
然后使用+=运算符添加行(如果要创建一个带额外行的副本,则使用+运算符)
然后您可以生成XML并将其写入
然后用
先进的这是以SQL方式使用Taba对象的方法。
此示例假定一个名为“id”的列 但可以替换width row.pos作为示例。
文件可从以下位置下载: |