TypeError:'datetime.datetime' objet n'est pas subscriptable
#!/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()
Je veux récupérer les données de mysql vers excel ,mais
r3=[(x[0:2],x[2],x[3:]) for x in r]
me donne TypeError:'datetime.datetime' object is not subscriptable
.
Je ne sais pas comment à ce sujet, et je viens d'étude seulement 3 semaines, veuillez m'aider?
Vous devez vous connecter pour publier un commentaire.
x
est undatetime.datetime
objet qui ne peut pas être utilisé avec les [] la notation comme dansx[0:2]
.Cela signifie que l'un de vos colonnes est titulaire d'un objet date, qui doit être analysée différemment.
Tout d'abord, vous ne voulez pas être à l'aide de pyExcelerator - qu'il est vieux et n'a pas été mis à jour dans les 3 années impaires (et a été remplacé).
Ce que vous devez utiliser est le utilitaires à http://www.python-excel.org/ et cela fournit des fonctions pour travailler avec datetimes. Excel stocke ces flotteurs depuis une certaine époque. Pour info https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html - dans la section "Dates dans Excel des feuilles de calcul". Voir aussi https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html#xldate.xldate_as_tuple-function pour comment convertir un fichier excel représentation d'une date à un standard de python datetime.
Si vous easy_install/pip xlutils, vous aurez à la fois la xlrd (lecture) et xlwt (par écrit) des bibliothèques. Jusqu'à la version 2003 de fichiers sont pris en charge, mais 2007+ (.fichier xlsx) est proche de sortir de la bêta.
modifier
Oublié de mentionner que https://secure.simplistix.co.uk/svn/xlwt/trunk/xlwt/doc/xlwt.html décrit comment le xlwt bibliothèque peut prendre un
datetime.dateime
et de convertir une cellule Excel.XFStyle()
style de l'objet lors de l'écriture de la cellule;style = XFStyle(); style.num_format = "YYYY-MM-DD"
ou similaire.L'un des champs de votre table semble contenir
datetime
objets,MySQLdb
renvoie également commedatetime
. Vous voudrez probablement convertirdatetime
àstr
premier. Cette ligne semble prendre une partie de ladatetime
en utilisant des tranches. Vous pouvez obtenir la même chose avecdatetime.strftime
.