#!/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()
I want get data from mysql to excel ,but r3=[(x[0:2],x[2],x[3:]) for x in r]
gives me TypeError:'datetime.datetime' object is not subscriptable
.
I do not know how to about it, and I just study only 3 week, please help me?
x
is a datetime.datetime
object which cannot be use with the [] notation as in x[0:2]
.
It means that one of your columns holds a date object which must be parsed differently.
Firstly, you don't want to be using pyExcelerator - it's old and hasn't been updated in 3 odd years (and has been superseded).
What you should be using is the utilities at http://www.python-excel.org/ and this provides functions for working with datetimes. Excel stores these as floats since a certain epoch. For info https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html - under the section "Dates in Excel spreadsheets". Also see https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html#xldate.xldate_as_tuple-function for how to convert an excel representation of a date to a standard python datetime.
If you easy_install/pip xlutils, you'll get both the xlrd (reading) and xlwt (writing) libraries. Up to version 2003 files are supported, but 2007+ (.xlsx file) support is close to coming out of beta.
edit
Forgot to mention that https://secure.simplistix.co.uk/svn/xlwt/trunk/xlwt/doc/xlwt.html describes how the xlwt library can take a datetime.dateime
and convert that to an Excel cell.
One of the fields in your table seems to contain datetime
objects, MySQLdb
also returns them as datetime
. You probably want to convert datetime
to str
first. That line seems to take some part of the datetime
by using slices. You could achieve the same with datetime.strftime
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.