首页 文章

如何从不同的数据库输入查询平面输出到Django模型?

提问于
浏览
1

首先,我是Django和Python的新手 - 所以我可能会问错误的问题,如果是这样,请告诉我在哪里看 . 如果没有,继续:

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

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

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

问题是数据是扁平格式,标签应该是列名,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

谢谢!

1 回答

  • 0

    我最终使用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')
    

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

    希望这可以帮助 .

相关问题