8
#!/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

我不知道该怎么办,我才学3周,请帮帮我?

4

3 回答 3

7

x是一个datetime.datetime不能与 [] 符号一起使用的对象,如x[0:2].

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

于 2012-06-24T12:12:48.577 回答
2

首先,您不想使用 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 文件)支持即将推出测试版。

编辑

忘了提到https://secure.simplistix.co.uk/svn/xlwt/trunk/xlwt/doc/xlwt.html描述了 xlwt 库如何获取 adatetime.dateime并将其转换为 Excel 单元格。

于 2012-06-24T12:35:48.083 回答
0

表中的一个字段似乎包含datetime对象,MySQLdb也将它们返回为datetime. 您可能想先转换datetimestrdatetime那条线似乎通过使用切片占据了一部分。您可以使用datetime.strftime.

于 2012-06-24T12:12:56.940 回答