我有两万种不同的物品要追踪。它们都有相同的属性:名称、高度、重量、分配的Id和成本(这些只是例子)。某些属性,如名称和指定的id,永远不会更改。其他属性对一些人变化迅速(每小时5-10次),而对于另一些人则很少(每周或每月1-2次)。我希望有一种方法来跟踪数据库中的所有这些更改,这样我就可以对更改进行一些分析。
现在,我几乎没有数据库方面的经验。我以前从来没有处理过这么多的信息,因此我刚刚处理了csv文件。此外,我使用python作为代码检索数据,并将使用它来分析它。因此,我认为sqlite是我最好的选择,我认为它很容易与python一起使用。我在想,我可以为每一项创建一个表,属性是列,更改将在每一行上进行。然而,我觉得可能有更好的方法(效率和存储容量)来做到这一点。
如果有人能勾勒出最好的方法来存储这些数据,以便为分析定期检索不会太困难,这将是真正的赞赏。
此外,如果您可以向我介绍一些在python中对这类数据进行数据分析的资源,那也会很棒。
提前感谢
发布于 2014-06-23 05:54:16
对于简单的数据库内容,SQLAlchemy是您的朋友:http://www.sqlalchemy.org/
这些文档包括相当全面的教程,它通过处理数据库所涉及的高级概念,以及如何设计和直接使用Python中的表。
下面是一个示例,展示了如何在代码中定义表。然后,SQLAlchemy将负责管理数据库,您可以将它们作为普通的Python对象来处理。
>>> from sqlalchemy import Column, Integer, String
>>> class User(Base):
... __tablename__ = 'users'
...
... id = Column(Integer, primary_key=True)
... name = Column(String)
... fullname = Column(String)
... password = Column(String)
...
... def __repr__(self):
... return "<User(name='%s', fullname='%s', password='%s')>" % (
... self.name, self.fullname, self.password)另外,本教程使用的是SQLite数据库!
我还建议您在开发数据库时查看一下数据库,以帮助您更好地了解引擎盖下发生的事情。您没有提到您正在工作的环境,但是探索SQLite数据库有很多不同的选择:sqlite3在Linux中,SQLite数据库浏览器在Windows中,等等。
更新:
至于问题的另一部分,您可能需要阅读数据库规范化。
基本标准化的一般思想是,不同的相似信息应该放在一个地方,而不是在许多不同的表中重复。
根据您给出的简短描述,我的方法将是一个Widgets表,它将存储您正在跟踪的每一项的ID和名称,然后是一个Dimensions表,该表将列出所有更改:
+-----------+----------------------+--------+--------+-----+
| widget_id | change_time | height | weight | ... |
+-----------+----------------------+--------+--------+-----+
| 0 | 05-12-2014 18:30:58 | 4 | 10 | ... |
| 0 | 06-22-2014 12:32:46 | 4 | 12 | ... |
| 0 | 06-23-2014 01:02:00 | 6 | 12 | ... |
| ... |每当发生更改时,就向Dimensions表添加一个条目。这样,您可以在过去的任何时候查找维度,分析随时间变化的情况,等等。
https://stackoverflow.com/questions/24359019
复制相似问题