Django/Python和使用PostgreSQL的原始SQL查询

Django/Python和使用PostgreSQL的原始SQL查询,python,django,postgresql,datetime,Python,Django,Postgresql,Datetime,我正在Django项目中使用cursor.execute执行原始SQL查询 这是我的Djangomodels.py数据库模式: class Client(models.Model): date_incorporated = models.DateTimeField(default=timezone.now) 下面是该表的psql说明: # \d+ client Column | Type | Modifiers

我正在Django项目中使用
cursor.execute执行原始SQL查询

这是我的Django
models.py
数据库模式:

class Client(models.Model):
    date_incorporated = models.DateTimeField(default=timezone.now)
下面是该表的
psql
说明:

# \d+ client

      Column       |           Type           |      Modifiers     | Storage  |
-------------------+--------------------------+--------------------+----------+
 date_incorporated | timestamp with time zone | not null           | plain    |

这是我感到困惑的地方:

如果我使用
psql
从表中查询数据,我会得到:

# SELECT date_incorporated FROM client;

   date_incorporated    
------------------------
 2017-06-14 19:42:15-04
 2017-11-02 19:42:33-04
(2 rows)
这对我来说很有意义。在中,它显示(我相信)这只是一个正确格式化并存储为UTC时间戳的字符串

当我使用此查询浏览Django时:

cursor.execute('SELECT date_incorporated FROM client;')
data = [dict(zip(columns,row)) for row in cursor.fetchall()]
()

…my
date\u incorporated
字段被转换为python
datetime
对象

{'date_incorporated': datetime.datetime(2017, 11, 2, 23, 42, 33, tzinfo=<UTC>)}
{'date\u incorporated':datetime.datetime(2017,11,2,23,42,33,tzinfo=)}

在我正在构建的这个应用程序中,我希望用户能够输入原始SQL,并将输入的字符串放入要执行的
cursor.execute(rawSQL)
函数中。我希望输出与
psql
版本相同

如果我使用的是Django ORM,我可能会期望带时区的
时间戳
被转换为一个时区感知的
datetime
对象,但是由于我正在执行一个原始SQL调用,我希望返回
2017-06-14 19:42:15-04
对象,而不是python
datetime
对象

{'date_incorporated': datetime.datetime(2017, 11, 2, 23, 42, 33, tzinfo=<UTC>)}

fetchall
方法是否仍然充当Django ORM并转换某些字段?

我相信这是使用任何接口驱动程序的标准转换。 即使使用py postgressql,也会得到相同的结果,即光标根据数据库中定义的字段类型进行转换


长话短说,dictfetchall并没有进行任何转换,而是从游标解析转换后的结果。

谢谢。光标是所有接口驱动程序的标准配置?很可能是从哪里来的?