【问题标题】:how to use json data in website, what kind of database should I use? [closed]如何在网站中使用json数据,我应该使用什么样的数据库? [关闭]
【发布时间】:2019-07-18 11:45:01
【问题描述】:

我正在尝试创建一个网站,访问者可以在该网站上单击美国地图上的一个州,并让它向他们提供有关在给定年份参加所选州选举的候选人的统计数据和信息。 我已经有一个图像地图,我将添加一个以年份和地区为参数的 javascript 函数。

我正在尝试在 Django 和 Google App Engine 中执行此操作,并且我主要使用 Python 编写代码。

我在 .json 文件中收集了数据,认为我可以在 Python 中执行类似于 open("path.json", "r") 的操作并解析数据。

但我不确定如何做到这一点,或者是否有可能做到这一点。当我进行一些谷歌搜索时,我开始怀疑是否需要使用数据库。我应该使用数据库吗?如果必须,我应该使用 RDB 还是 NoSQL?另外,我应该如何将json中的数据提供给数据库。

我的 json 文件看起来像这样:

{
  "AL": {
    "api_version": "1.0",
    "pagination": {
      "count": 7,
      "pages": 1,
      "per_page": 100,
      "page": 1
    },
    "results": [
      {
        "party": "REP",
        "last_f2_date": "2015-12-09",
        "election_districts": [
          "00"
        ],
        "load_date": "2018-02-17T09:16:20+00:00",
        "party_full": "REPUBLICAN PARTY",
        "first_file_date": "2015-12-09",
        "office": "S",
        "incumbent_challenge": "C",
        "district_number": 0,
        "office_full": "Senate",
        "candidate_status": "N",
        "active_through": 2016,
        "candidate_id": "S6AL00336",
        "state": "AL",
        "election_years": [
          2016
        ],
        "federal_funds_flag": false,
        "incumbent_challenge_full": "Challenger",
        "flags": "S6AL00336",
        "district": "00",
        "cycles": [
          2016,
          2018
        ],
        "last_file_date": "2015-12-09",
        "has_raised_funds": true,
        "name": "BOWMAN, MARCUS",
        "operating_expenditure": 770.0,
        "primary_votes": "[19707]",
        "primary_sahre": "[0.0253026573760578]",
        "general_votes": "[' ']",
        "general_sahre": "[' ']"
      },
      {
        "party": "DEM",
        "last_f2_date": "2015-04-03",
        "election_districts": [
          "00"
        ],
        "load_date": "2018-02-17T09:16:20+00:00",
        "party_full": "DEMOCRATIC PARTY",
        "first_file_date": "2015-04-03",
        "office": "S",
        "incumbent_challenge": "C",
        "district_number": 0,
        "office_full": "Senate",
        "candidate_status": "P",
        "active_through": 2016,
        "candidate_id": "S6AL00302",
        "state": "AL",
        "election_years": [
          2016
        ],
        "federal_funds_flag": false,
        "incumbent_challenge_full": "Challenger",
        "flags": "S6AL00302",
        "district": "00",
        "cycles": [
          2016,
          2018,
          2020
        ],
        "last_file_date": "2015-04-03",
        "has_raised_funds": true,
        "name": "CRUMPTON, RONALD (RON) STEVEN",
        "operating_expenditure": 33668.0,
        "primary_votes": "[153897]",
        "primary_sahre": "[0.560802119355885]",
        "general_votes": "[748709.0]",
        "general_sahre": "[0.358672615888139]"
      },

【问题讨论】:

    标签: python json database web


    【解决方案1】:

    我建议建立一个数据库,因为我发现为它编写代码更容易,尤其是在您的数据不断变化的情况下。如果没有,它仍然是一个好主意,因为您可以从数据库中提取数据并通过 python 上传数据(例如:psycopg2 for PostgreSQL)。

    此外,每次选举时您的数据都会增长,然后会添加更多数据,使您的 JSON 文件扩展,如果引入任何统计信息,则需要编写特定代码来读取此类文件。与数据库相比,您可以添加一个新字段(现在可能不存在)并为所有条目提供默认值,而无需将新值复制到 JSON 文件中的每个条目。此外,由于 Django 的框架,查询数据得到了简化。

    最后,我将从 PostgreSQL 开始,因为它是免费的,并且有一个 GUI 界面可以与之交互,以帮助您更好地理解 SQL。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      您声称使用 Django Web 框架使用 Python 进行编码。

      Django 是一个专门为数据库交互而设计的 Web 框架(如果可能的话,如果没有它,使用它几乎没有意义)。 Django 仅支持关系数据库 (RDB),并且在那些可用的数据库中,仅:

      NoSQL 数据库不受 Django 本身的官方支持。然而,有一些副项目和分支允许在 Django 中使用 NoSQL 功能,例如 Django non-rel - Django Docs

      在 Python 中,解析 JSON 格式字符串很容易:

      https://docs.python.org/3/library/json.html

      您对结果的处理方式完全取决于您以及它如何最适合您网站的总体设计和后端实施。您甚至可以将 JSON 直接存储在专用数据库字段中:

      https://docs.djangoproject.com/en/2.2/ref/contrib/postgres/fields/#django.contrib.postgres.fields.JSONField

      【讨论】:

        猜你喜欢
        • 2012-07-29
        • 2021-07-30
        • 2011-03-19
        • 1970-01-01
        • 1970-01-01
        • 2019-08-03
        • 1970-01-01
        • 2012-10-02
        • 2021-08-18
        相关资源
        最近更新 更多