我正在使用pyodbc从sqlserver中提取数据,并希望转换日期时间。日期时间在插入到另一个数据库(表)之前,将列值设置为epoch。当我这样做的时候,我看到我的列表列表正在变平。如何避免这个请。你知道吗
>>> scur.execute("select top 2 * from database.dbo.table")
<pyodbc.Cursor object at 0x1f2d930>
>>> cnt = scur.fetchall()
>>> rowlist = [list(l) for l in cnt]
>>> rowlist
[[404458, 348, datetime.datetime(2015, 10, 9, 14, 13), datetime.datetime(2015, 10, 9, 0, 0), u'ded1598f-eed1-4edb-bfe4-f866592e9a51', u'el ong', u'', 1, 0, 0.091499999999999998, 0.0, -999999.0, -999999.0, 0.0, 0.25, -999999.0, -999999.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, None, None, 1127, None, u'150610007', u'10', u'CMMQ0056', None, u'0', None, None, None, None, None, False, None, None], [404459, 349, datetime.datetime(2015, 10, 9, 14, 13), datetime.datetime(2015, 10, 9, 0, 0), u'174b2d32-e71d-40b0-9c1d-cab7274c9b40', u'el ong', u'', 1, 0, 0.055399999999999998, 0.0, -999999.0, -999999.0, 0.0, 0.40000000000000002, -999999.0, -999999.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, None, None, 1127, None, u'150610007', u'10', u'CMMQ0056', None, u'0', None, None, None, None, None, False, None, None]]
>>> [row[i].strftime('%s') if isinstance(row[i], datetime.date) else row[i] for row in rowlist for i in range(len(row))]
[404458, 348, '1444414380', '1444363200', u'ded1598f-eed1-4edb-bfe4-f866592e9a51', u'el ong', u'', 1, 0, 0.091499999999999998, 0.0, -999999.0, -999999.0, 0.0, 0.25, -999999.0, -999999.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, None, None, 1127, None, u'150610007', u'10', u'CMMQ0056', None, u'0', None, None, None, None, None, False, None, None, 404459, 349, '1444414380', '1444363200', u'174b2d32-e71d-40b0-9c1d-cab7274c9b40', u'el ong', u'', 1, 0, 0.055399999999999998, 0.0, -999999.0, -999999.0, 0.0, 0.40000000000000002, -999999.0, -999999.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, None, None, 1127, None, u'150610007', u'10', u'CMMQ0056', None, u'0', None, None, None, None, None, False, None, None]
您需要使用内部列表comp进行迭代,这样就可以保留行,也可以简单地迭代每行中的元素,而不需要范围。你知道吗
这样就可以了。这将保留所需的列表结构,同时仍执行转换:
假设您有一个列表列表(一个简单的示例):
然后可以使用嵌套列表来保留嵌套列表:
相关问题 更多 >
编程相关推荐