2012-06-24 41 views
1
#!/usr/bin/env python 
# coding: utf-8 
import MySQLdb 
import os,sys 
import time 
import datetime 
from pyExcelerator import * 

def main(): 
    '''get datas from mysql to excel''' 
    w=Workbook() 
    ws=w.add_sheet('user') 

    mysql_conn=MySQLdb.connect(................,charset="utf8") 
    cursor=mysql_conn.cursor() 

    cursor.execute("select * from students") 
    results=cursor.fetchall() 
    results_count=len(results) 
    cursor.close() 
    mysql_conn.close() 
    a=results_count-1 
    print a 
    #print results 

    row=0  
    for r in results:   
     r3=[(x[0:2],x[2],x[3:]) for x in r] 
     w3=datetime.strptime("%Y-%m-%d %H:%M:%S") 
     [ws.write(x[0:2],i) for i in r3] 

     [ws.write(w3,i) for i in r3] 
     [ws.write(x[3:],i or '') for i in r3]:  
     row+=1 
    w.save('data.xls') 

if __name__ == "__main__": 
    main() 

我想从MySQL到Excel中获取数据,但 r3=[(x[0:2],x[2],x[3:]) for x in r]给我TypeError:'datetime.datetime' object is not subscriptable类型错误: 'datetime.datetime' 对象不是标化

我不知道该怎么做,而我只学习了3周,请帮帮我吗?

回答

1

xdatetime.datetime对象,它不能与x[0:2]中的[]符号一起使用。

这意味着其中一列包含一个必须以不同方式解析的日期对象。

0

您的表格中的一个字段似乎包含datetime个对象,MySQLdb也会将它们返回为datetime。您可能首先要将datetime转换为str。该行似乎通过使用切片需要datetime的一部分。你可以用datetime.strftime来达到同样的效果。

1

首先,你不想使用pyExcelerator - 它是旧的,并没有在3年内更新(并已被取代)。

你应该使用的是http://www.python-excel.org/的实用程序,它提供了处理日期时间的函数。自某个时代以来,Excel将这些数据存储为浮动数据。有关信息https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html - 在“Excel电子表格中的日期”部分下。另请参阅https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html#xldate.xldate_as_tuple-function了解如何将日期的Excel表示转换为标准的python日期时间。

如果你easy_install/pip xlutils,你将得到xlrd(阅读)和xlwt(写作)库。支持版本2003的文件,但2007+(.xlsx文件)支持即将推出beta版。

编辑

忘了提,https://secure.simplistix.co.uk/svn/xlwt/trunk/xlwt/doc/xlwt.html描述xlwt图书馆如何才能加入一个datetime.dateime并且将其转换成Excel单元格。

+0

写入单元格时,还需要设置'XFStyle()'样式对象; 'style = XFSt​​yle(); style.num_format =“YYYY-MM-DD”或类似的。 –

相关问题