【问题标题】:How to Insert several separate characters in a sqlite3 cell?如何在 sqlite3 单元格中插入几个单独的字符?
【发布时间】:2022-01-24 13:22:58
【问题描述】:

我想在one cell中插入several不同的值

例如

Friends' names
  ID  | Grade        | Names
  ----+--------------+----------------------------
  1   | elementary   | Kai, Matthew, Grace
  2   | guidance     | Eli, Zoey, David, Nora, William
  3   | High school  | Emma, James, Levi, Sophia

或作为列表或字典:

  ID  | Grade        | Names
  ----+--------------+------------------------------
  1   | elementary   | [Kai, Matthew, Grace]
  2   | guidance     | [Eli, Zoey, David, Nora, William]
  3   | High school  | [Emma, James, Levi, Sophia]

  ID  | Grade        | Names
  ----+--------------+---------------------------------------------
  1   | elementary   | { a:Kai, b:Matthew, c:Grace}
  2   | guidance     | { a:Eli, b:Zoey, c:David, d:Nora, e:William}
  3   | High school  | { a:Emma, b:James, c:Levi, d:Sophia}

Is there a way?

【问题讨论】:

  • SQLite 核心没有工具来分析/组合来自/到集合的字符串。您可以安装 JSON1 扩展以启用撰写/分析 JSON 格式的字符串。

标签: python sql database sqlite row


【解决方案1】:

是的,有办法,但这并不意味着你应该这样做。

例如,您可以将值保存为 json 字符串并将它们保存在列中。如果您稍后想要添加一个值,您可以简单地解析 json,添加该值并将其放回数据库中。 (可能也适用于 BLOB,但我不确定)

但是,我不建议将列表保存在列中,因为 SQL 不适合那样使用。

我建议你有一个表,每个年级都有自己的主键。像这样:

ID Grade
1 Elementary
2 Guidance
3 High school

然后是另一个包含所有名称的表,具有自己的主键和gradeId 作为其辅助键。例如:

ID GradeID Name
1 1 Kai
2 1 Matthew
3 1 Grace
4 2 Eli
5 2 Zoey
6 2 David
7 2 Nora
8 2 William
9 3 Emma
10 3 James
11 3 Levia
12 3 Sophia

如果您想了解更多相关信息,请阅读 SQL 中的规范化。

【讨论】:

    猜你喜欢
    • 2013-01-29
    • 2013-02-14
    • 2017-08-03
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多