【问题标题】:Coding python data to Sqlite database将python数据编码到Sqlite数据库
【发布时间】:2018-03-20 01:35:37
【问题描述】:

我正在尝试在 sqlite 数据库中插入一行未定义数量的事件。每个事件都有一对由日期和分数组成,比如说 9-5。据我所知,例如,在不知道我需要多少列的情况下,我无法将每个事件分成两列。

所以,我们有一个日期,例如

datetime.today().timestamp()  
1507497496.988682

还有一个参数,比如说

905

在我的示例中,每个日期分数可以有不少于 4 个日期。我想我不能把它全部编码为一个真实的,而且我听说在很多行之后将它作为文本来写它会减慢数据库的速度。

那么,你有什么想法吗?

我的第一个方法是在日期和分数之间添加几个 0,类似于

15074974960000000905

但是生成的数字太长了,无法容纳一个单元格,所以我需要另一种策略

提前致谢

我编辑以添加信息。我正在做的是一个自动过程,在这个过程中,爬虫每天都会从网络上获取信息并通过数据库进行存储。因此,例如,我每天必须存储 10 行。数量不同。在每一行中,我必须插入成对的信息,就像我在上面发布的那样。对的数量(以数字表示的日期,以数字表示的分数)也取决于日期。

所以,总而言之,我知道我要插入的信息的格式和大小,但我不知道有多少行,也不知道每行的事件数。

代码应该是这样的:

Match 1: 
Some scraping to get previous matches.
What I get (date1,score1);(date2;score2);...(daten;Score n)

所以,当我将它存储在 sqlite 中时,我有一个匹配表,获取我刚刚插入的匹配的 id,并在另一个表中存储其他数据。一种可能的解决方案是创建多个列,但我不知道每个匹配有多少列。另一种是创建单个数据列并将所有内容作为文本插入,但我不知道在数百行之后会不会太重。

【问题讨论】:

  • 为什么不能使用多列?您想对不起作用的数据进行哪些操作?
  • 我可以使用多列,但这是在自动化过程中,有些会有 4 列,其他 16 列,我认为它不会很优雅。如果这是唯一可能的解决方案,我将不得不接受它,但我希望找到不同的东西
  • 多列和单个文本列都可以。哪一个效果更好取决于您的应用程序,我们对此一无所知。
  • 我编辑了我的操作以添加更多关于我在做什么的信息。多列的问题是每一行都是可变的,自动化它可能会很痛苦。
  • 为什么每天多行?有什么区别?

标签: python sqlite database-design


【解决方案1】:

当一个 Y 有多个 X 时,您应该在数据库中将其建模为两个表 X 和 Y,它们之间具有 N:1 关系。

所以你会有一个匹配表,第二个表Match_History,每个日期/分数对都有一行(以及匹配表的外键)。

【讨论】:

  • 您的建议是,获取匹配项的 id,然后在另一个表中为每对数据插入一行,以使一个匹配项生成 6(或 20)行?嗯,可以工作
猜你喜欢
  • 1970-01-01
  • 2017-03-07
  • 2014-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多