#!/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获取数据,但是
r3=[(x[0:2],x[2],x[3:]) for x in r]
给了我TypeError:'datetime.datetime' object is not subscriptable
。
我不知道该如何处理,我只研究了3周,请帮助我?
答案 0 :(得分:4)
x
是一个datetime.datetime
对象,不能与x[0:2]
中的[]表示法一起使用。
这意味着您的一个列包含一个必须以不同方式解析的日期对象。
答案 1 :(得分: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文件)支持即将推出测试版。
修改强>
忘记提及https://secure.simplistix.co.uk/svn/xlwt/trunk/xlwt/doc/xlwt.html描述了xlwt库如何获取datetime.dateime
并将其转换为Excel单元格。
答案 2 :(得分:0)
您的表格中的某个字段似乎包含datetime
个对象,MySQLdb
也会将其作为datetime
返回。您可能希望先将datetime
转换为str
。通过使用切片,该行似乎占用了datetime
的某些部分。您可以使用datetime.strftime
实现相同的目标。