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からデータを取得して優れたものにしたいのですが、 私にr3=[(x[0:2],x[2],x[3:]) for x in r]与えてくれ TypeError:'datetime.datetime' object is not subscriptableます。

どうしたらいいかわからないので、3週間しか勉強していません。助けてください。

4

3 に答える 3

7

xdatetime.datetimeように [] 表記では使用できないオブジェクトx[0:2]です。

これは、列の 1 つが異なる方法で解析する必要がある日付オブジェクトを保持していることを意味します。

于 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 スプレッドシートの日付」セクションの下。日付の Excel 表現を標準の Python 日時に変換する方法については、 https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html#xldate.xldate_as_tuple-functionも参照してください。

xlutils を easy_install/pip すると、xlrd (読み取り) ライブラリと xlwt (書き込み) ライブラリの両方が得られます。バージョン 2003 までのファイルがサポートされていますが、2007 以降 (.xlsx ファイル) のサポートはベータ版から間もなく終了します。

編集

https://secure.simplistix.co.uk/svn/xlwt/trunk/xlwt/doc/xlwt.htmlは、xlwt ライブラリが を取り、datetime.dateimeそれを Excel セルに変換する方法を説明していることを忘れていました。

于 2012-06-24T12:35:48.083 に答える
0

テーブル内のフィールドの 1 つにdatetimeオブジェクトが含まれているようですが、MySQLdbそれらも として返しますdatetimedatetimeおそらく最初に変換したいでしょうstrdatetimeその行は、スライスを使用して一部を占めるようです。で同じことを達成できdatetime.strftimeます。

于 2012-06-24T12:12:56.940 に答える