根据数据表导入xls数据

公司开发游戏的过程中会有很多配置表,如果数据多了更麻烦的是策划更改了数据

数据的导入就成了一件很麻烦的事,所以就写了一个导入数据的类

现在只要根据 数据库中的 表名和文件名 就可以将xls中的数据导入

xls中的数据得根据 表中字段顺序书写

代码中注意的地方也有提到:

#-*-coding:utf-8-*-


import xlrd
from sgLib.pyDB import DBPool,DB

class AddXlsDataToDB():
    '''@summary:将xls表中的数据导入对应数据表中
                xls表中的数据必须根据数据表中各个字段顺序进行书写
    '''
    def __init__(self,table,filename,clear=False,leaveAutoId=True,index=0,rowStart=1):
        '''@param bool clear:是否清空原来数据
           @param bool leaveAutoId:是否添加表的Auto_increment字段
           @param int index:  xls的sheet的index
           @param int rowStart: 从第几行开始
        '''
        self.table = table
        self.filename = filename
        self.clear = clear
        self.leaveAutoId = leaveAutoId
        self.columns = self.getTableColumns()
        self.index = index
        self.rowStart = rowStart
        
    def getDb(self):
        c = DBPool()
        con = c.createCon()
        db = DB(con)
        return db
    
    def getTableColumns(self):
        db = self.getDb()
        columns = []
        try:
            db.cursor.execute('SHOW COLUMNS FROM %s'%self.table)
        except Exception,e:
            print e
        cInfos = db.fetchall()
        for cDict in cInfos:
            if not self.leaveAutoId and cDict['Extra']==u'auto_increment':#不用添加表的Auto_increment字段
                continue
            columns.append(cDict['Field'])
        return columns
    
    def getWorkbook(self,filename):
        try:
            wk = xlrd.open_workbook(filename)
        except Exception,e:
            wk = None
            print e
        return wk
    
    def startAdd(self):
        wk = self.getWorkbook(self.filename)
        sheet = wk.sheet_by_index(self.index)
        num = sheet.nrows
        db = self.getDb()
        if self.clear:
            db.delete(self.table, '1') #清空原来数据
        writeData = {}
        for i in xrange(self.rowStart,num):
            rowValues = sheet.row_values(i)
            for j,field in enumerate(self.columns):
                writeData[field] = rowValues[j]
            
            try:
                #插入数据
                db.insert(self.table,writeData)
            except Exception,e:
                print '%s failed!' %i
            print '%s succeed' %i

def _test():
    table = 'tb_name'
    filename = u'file/配置表.xls'
    a = AddXlsDataToDB(table,filename,clear=True)
    a.startAdd()

if __name__ == "__main__":
    _test()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值