pyodbc возвращает поля DATE SQL Server в виде строк

Я использую pyodbc для запроса таблицы базы данных SQL Server 2008 со столбцами типа DATE.

Результирующие строки данных содержат строки даты, а не экземпляры python datetime.date или datetime.datetime.

Это кажется проблемой только для столбцов типа DATE; столбцы типа DATETIME обрабатываются правильно и возвращают экземпляр datetime.datetime.

Пример

import pyodbc
from pprint import pformat
db = pyodbc.connect("DRIVER={SQL Server};SERVER=.\\SQLEXPRESS;DATABASE=scratch;Trusted_Connection=yes")
print pformat(db.cursor().execute("select * from Contract").description)

Результаты:

(('id', <type 'int'>, None, 10, 10, 0, False),
 ('name', <type 'str'>, None, 23, 23, 0, False),
 ('some_date', <type 'unicode'>, None, 10, 10, 0, True),
 ('write_time', <type 'datetime.datetime'>, None, 23, 23, 3, False))

Обратите внимание, что столбец some_date указывается как строка типа unicode, однако в базе данных этот столбец определен как ДАТА:

CREATE TABLE dbo.Contract(
    id INT NOT NULL,
    name VARCHAR(23) NOT NULL,
    some_date DATE NULL,
    write_time DATETIME NOT NULL)

Это нормально, и как я могу это исправить?

6
задан Daniel Fortunov 24 August 2011 в 09:07
поделиться