在django中的数据库表中获取新添加的记录

时间:2013-12-06 10:31:00

标签: python sql django

我在django(开发服务器)中有一个数据库设置,我有一个代理(exe),它位于远程机器中。当我执行代理时,代理将数据插入到服务器数据库中(使用sql查询) (在代理中我使用python MySQLDb连接并将数据插入到数据库表中。)

在服务器端,我在循环中等待获取记录但是我无法使用soft_row_obj = EpSoftData.objects.filter(unique_id = un_id)找到最新插入的记录(虽然我可以看到条目(手动)在我的数据库中)

我的模特档案:

class EpSoftData(models.Model):
    unique_id = models.BigIntegerField(null=True, blank=True)
    ip_address = models.CharField(max_length=60)
    soft_data = models.CharField(max_length=15000, blank=True)
    scan_time = models.DateTimeField()
    err_msg = models.CharField(max_length=3000, blank=True)

    class Meta:
        db_table = u'ep_soft_data'

Views.py文件:

def func(un_id):
    while True:
        soft_row_obj = EpSoftData.objects.filter(unique_id = un_id)
        if soft_row_obj :
            return soft_row_obj
            break;   

代理商代码:

"INSERT INTO ep_soft_data (unique_id, ip_address, soft_data, scan_time, err_msg) VALUES ('%d','%s', '%s', '%s', '%s')" % (self.unique_id, self.ip_address, json.dumps(self.agentDict), self.scanTime, self.err_msg)

如果使用sql Query插入记录,Django不会在运行时加载数据。 如何获得记录?

提前致谢。

2 个答案:

答案 0 :(得分:0)

默认情况下,视图在事务中运行。在事务内运行的代码不会看到在事务外部完成的更改。您应该阅读transactions documentation以了解如何在您的函数中提交事务,甚至完全禁用事务管理。

答案 1 :(得分:0)

这解决了我的问题,每次在查询新值之前需要更新,它都是缓存。

soft_row_obj = EpSoftData.objects.update()

感谢大家的投入