【问题标题】:How to input query flat output from a different database to a Django model?如何将来自不同数据库的查询平面输出输入到 Django 模型?
【发布时间】:2018-09-25 03:19:07
【问题描述】:

首先,我是 Django 和 Python 的新手——所以我可能问错了问题,如果是这样,请告诉我去哪里看。如果没有,请继续:

我正在使用一个查询 Wordpress 数据库的 Django 应用程序,我创建了一个连接并这样编写查询:

    cnxn = MySQLdb.connect(host="localhost",
                           user="root",
                           passwd="password",
                           db="dbname") 

    query = '''SELECT post_id, label, meta_value
               FROM table'''

问题是数据是平面格式,其中label应该是列名,meta_value应该是值,输出:

    post_id    label    meta_value
    -------    -----    ----------
     1         name     example name
     1         email    example@mail.com
     2         name     example name 2
     2         email    example2@mail.com

请记住,每个 post_id 有 24 个标签,因此每个表单条目会在表格中添加 24 行。

我将如何创建一个 Django 模型,该模型以数据透视样式格式附加表中的数据,以便能够在模板中很好地显示它?目标是能够在主页上显示 4-5 个标签,每行上都有一个链接,在单独的页面上显示完整的输入。

期望的输出:

    post_id        name              email
    -------        ----              -----
       1           example name      example@mail.com
       2           example name 2    example2@mail.com

谢谢!

【问题讨论】:

    标签: python django python-2.7 django-models


    【解决方案1】:

    我最终使用 Pandas 将初始输出转换为枢轴,然后将 df 上传到我创建的具有相同字段名称的新模型中。

        def users(request):
            df = pd.read_sql(query, cnxn)
            pvt = df.pivot(columns='label', index='post_id', values='meta_value')
            pvt = pvt.reset_index()
            pvt['id'] = pvt.index
            pvt.to_sql('table_name', cnxn, if_exists='replace')
    

    配置的模型包含查询表中的所有字段,所以结果与模型匹配,我可以将其视为对象。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-01
      • 2014-08-25
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      • 2018-04-12
      • 2018-02-24
      相关资源
      最近更新 更多