我有一个Django视图,它执行一些复杂的SQL查询,其中包含如下代码:
sql1 = "CREATE TEMPORARY TABLE my_temp_table ..."
cursor = connection.cursor()
cursor.execute(sql1)
...
sql2 = "INSERT INTO my_temp_table ..."
cursor = connection.cursor()
cursor.execute(sql2)
查询比这更复杂,但想法应该是清楚的:我创建一个临时表,然后在其中插入一堆东西,我稍后在视图中使用它。这是有效的 - 基于视图的性能,显而易见的是,正在创建表并将内容插入其中。
但是,在添加功能的过程中,我想检查插入到 my_temp_table 中的内容的结果,以便优化使用它的一些查询。因此,出于探索目的,我将SQL更改为仅创建一个常规表,因此我可以在之后检查它。所以 sql1 实际上变成了:
sql1 = "CREATE TABLE my_temp_table ..."
cursor = connection.cursor()
cursor.execute(sql1)
换句话说,除了 my_temp_table 之外,所有内容都是相同的,而没有" TEMPORARY"改性剂。
问题是,当查询完成后, my_temp_table 表为空 - 没有插入其中的数据(在 sql2 查询中)在视图完成后实际上就在它中。这很令人费解 - 显然,在视图执行过程中数据已成功插入到 my_test_table 中,否则视图将无法完成它正在做的事情。但数据在哪里?
[另一个确认,表中的数据实际 在一个点上是我可以记录查询,然后手动手动运行相同的查询,一切都像我一样#&# 39; d期待。]
我使用Django 1.4.2在Django的testserver(通过manage.py runserver)上运行它。