如何在数据库中存储20000个项目的更改数据

2024-04-18 01:30:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有20000个不同的项目要跟踪。它们都具有相同的属性:姓名、身高、体重、分配的Id和成本(这些只是示例)。某些属性,如名称和分配的id,永远不会改变。其他属性变化很快(每小时5-10次),而很少(每周或每月1-2次)。我想一种方法来跟踪数据库中的所有这些变化,以便我可以执行一些变化的分析。你知道吗

现在,我几乎没有数据库方面的经验。我以前从来没有处理过这么多的信息,因此我只能处理csv文件。另外,我正在使用python作为代码来检索数据,并将使用它来分析数据。因此,我认为sqlite可能是我的最佳选择,我认为它很容易与python一起使用。我在想,我可以为每一项创建一个表,让属性成为列,而更改将出现在每一行上。不过,我觉得可能有更好的方法(效率和存储大小方面的)来做到这一点。你知道吗

如果有人能概述一下存储这些数据的最佳方式,以便定期检索以进行分析不会太困难,那将非常感谢。你知道吗

另外,如果您能给我提供一些资源,用python对这种类型的数据进行数据分析,那也太好了。你知道吗

提前谢谢


Tags: 数据项目方法名称信息id数据库示例
1条回答
网友
1楼 · 发布于 2024-04-18 01:30:57

对于简单的数据库内容,SQLAlchemy是您的朋友:http://www.sqlalchemy.org/

文档包括a fairly comprehensive tutorial,其中介绍了使用数据库时涉及的高级概念,以及如何直接在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数据库:Linux中的sqlite3,Windows中的SQLite Database browser,等等

更新:

至于问题的另一部分,你可能想读一下database normalization。你知道吗

(基本)规范化的一般思想是,相似信息的不同部分应该放在一个地方,而不是在许多不同的表中重复。你知道吗

从您给出的简短描述来看,我的方法是一个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表添加一个条目。这样,您就可以查找过去任何时间的维度,分析随时间的变化,等等

相关问题 更多 >

    热门问题