我正在使用 pyodbc 查询包含 DATE 类型列的 SQL Server 2008 数据库表。
生成的数据行包含日期字符串,而不是 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 字符串,但是,在数据库中,该列被定义为 DATE:
CREATE TABLE dbo.Contract(
id INT NOT NULL,
name VARCHAR(23) NOT NULL,
some_date DATE NULL,
write_time DATETIME NOT NULL)
这是正常的,我怎样才能最好地纠正它?