我在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不会在运行时加载数据。 如何获得记录?
提前致谢。
答案 0 :(得分:0)
默认情况下,视图在事务中运行。在事务内运行的代码不会看到在事务外部完成的更改。您应该阅读transactions documentation以了解如何在您的函数中提交事务,甚至完全禁用事务管理。
答案 1 :(得分:0)
这解决了我的问题,每次在查询新值之前需要更新,它都是缓存。
soft_row_obj = EpSoftData.objects.update()
感谢大家的投入