【问题标题】:Use custom query result as source for Django model (MySQL database)使用自定义查询结果作为 Django 模型(MySQL 数据库)的源
【发布时间】:2016-04-06 08:33:51
【问题描述】:

我有一个包含大量结构化数据的数据库。我将在这些数据中进行查询。

当我使用视图进行查询时,这将非常有帮助。我可以创建一个与视图具有相同结构的模型,然后将其用作“真实”模型。

但是,如果我无法创建视图,我们可以使用 Django 模型来查询自定义结果集吗?

例如,在 MySQL 中,我们可以编写查询以将中间结果存储在元组列表中。然后我们可以对列表进行查询。无论如何,我们可以将查询创建的元组列表的结果提供给 Django 的模型吗?

【问题讨论】:

    标签: mysql django


    【解决方案1】:

    对于带有原始 SQL 查询的模型,您可以使用raw() 方法。看看这个例子(来自官方参考):

    class Person(models.Model):
        first_name = models.CharField(...)
        last_name = models.CharField(...)
        birth_date = models.DateField(...)
    
    #...
    
    for p in Person.objects.raw('SELECT * FROM myapp_person'):
        print(p)
    

    Read more here

    【讨论】:

    • 有没有可能出现Person表从不存在于数据库中,而我只是创建了模型类进行查询的情况?
    • 现在不存在的表要如何查询?您必须为此准备一个select,所以这将是创建模型的时刻。我认为在 Django 中不可能将查询结果解析为 Model 类对象,但是使用游标和直接 DB 查询可以动态创建一个类(通过获取结果、迭代它并将字段添加到某个空类)
    • 我刚刚做了一个快速测试。我意识到,当您执行原始查询并从模型中具有不同名称的表中选择数据时,它只会在 Django 中工作。感谢您的帮助!
    猜你喜欢
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    相关资源
    最近更新 更多