TypeError: 'datetime.datetime'-object is niet 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()

Ik wil dat gegevens van MySQL uitblinken, maar r3 = [(x [0: 2], x [2], x [3:]) voor x in r] geeft me TypeError: 'datetime.datetime' object is niet subscriptabel .

Ik weet niet hoe ik het moet doen, en ik studeer slechts 3 weken, help me alstublieft?

1

3 antwoord

Ten eerste wil je pyExcelerator niet gebruiken - het is oud en is niet bijgewerkt in 3 oneven jaren (en is achterhaald).

Wat u zou moeten gebruiken, zijn de hulpprogramma's op http://www.python-excel.org/ en dit biedt functies voor het werken met datimes. Excel slaat deze op als praalwagens sinds een bepaald tijdperk. Voor informatie https://secure.simplistix.co.uk /svn/xlrd/trunk/xlrd/doc/xlrd.html - onder de sectie "Datums in Excel-spreadsheets". Zie ook https://secure .simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html # xldate.xldate_as_tuple-function voor het converteren van een excel-representatie van een datum naar een standaard python datetime.

Als je easy_install/pip xlutils gebruikt, krijg je zowel de xlrd (lezen) en xlwt (schrijven) bibliotheken. Tot versie 2003-bestanden worden ondersteund, maar de ondersteuning voor 2007+ (.xlsx-bestanden) komt bijna uit de bèta.

bewerken

Vergat te vermelden dat https://secure.simplistix.co .uk/svn/xlwt/trunk/xlwt/doc/xlwt.html beschrijft hoe de xlwt-bibliotheek een datetime.dateime kan nemen en die naar een Excel-cel kan converteren.

1
toegevoegd
U moet ook een XFStyle() -stijlobject instellen wanneer u de cel schrijft; style = XFStyle (); style.num_format = "JJJJ-MM-DD" of vergelijkbaar.
toegevoegd de auteur Martijn Pieters, de bron

x is a datetime.datetime object which cannot be use with the [] notation as in x[0:2].

Dit betekent dat een van uw kolommen een datumobject bevat dat anders moet worden geparseerd.

1
toegevoegd

Een van de velden in uw tabel lijkt datetime -objecten te bevatten, MySQLdb geeft ze ook als datetime . Waarschijnlijk wilt u eerst datetime converteren naar str . Die lijn lijkt een deel van de datetime op te nemen met behulp van slices. U zou hetzelfde kunnen bereiken met datetime.strftime .

0
toegevoegd