Python中编写函数将数据库内容导入到EXCEL

继Python将数据库数据导入到EXCEL文章之后,这次来一个推进版,将其编写为函数,接着是class。哈哈。。

问过群里的朋友,他们大多采用工具将数据导入到excel,本人以前是用select ... into outfile 导出为csv格式,但是这样的数据是没有列标题的,每次手动添加。后来用过sqlyog 这个工具也没有列标题。后来改用Navicat,觉得以后可以过安稳日子啦,有一次新项目上线,运营要“全部”数据(真不知道他们怎么想的),用navicat 试了一次,慢的要死。还经常无故终止,真是恶心死我啦。

对于导出“全部”数据,简单高效点。我决定用Python解析一次。中心思想是:用Python MySQLdb 模块 从Information_schema中得出数据内容的列标题,利用xlwt模块创建excel文件,并写入数据。下面贴出代码,欢迎各位拍砖:

#!/usr/bin/env python
import sys
import MySQLdb
import xlwt
db=sys.argv[1]
table=sys.argv[2]
def xls(sql='select * from %s.%s'):
    #xls info
    wbk=xlwt.Workbook()
    sheet=wbk.add_sheet('sheet 1')
    #connect Info
    try:
        conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='XXXXX')
        cursor=conn.cursor()
        cursor.execute('use information_schema')
        cursor.execute('select COLUMN_NAME  from COLUMNS where TABLE_NAME=%s and TABLE_SCHEMA=%s',(table,db))
        columnName=cursor.fetchall()
        columnLen=len(columnName)
        columnNum=0
        for data in range(columnLen):
                sheet.write(0,columnNum,columnName[columnNum][0])
                columnNum +=1
        cursor.execute(sql % (db,table))
        dataInfo=cursor.fetchall()
        rowLine=0
        for line in range(len(dataInfo)):
                lineInfo=dataInfo[line]
                rowLine+=1
                columnLine=0
                for row in lineInfo:
                        sheet.write(rowLine,columnLine,row)
                        columnLine+=1
        wbk.save('%s.xls' % table)
        cusor.close()
        conn.commit()
        conn.close()
    finally :
        conn.close()
        sys.exit(1)
if __name__=='__main__':
        xls()

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索python
, 数据
, table
, cursor
, python excel csv
, xlwt
, sheet
, conn
, MySQLdb模块
fetchAll()
python导入数据库、oracle数据库函数编写、python 编写函数、python回测函数编写、python导入自定义函数,以便于您获取更多的相关知识。

时间: 2024-10-14 18:53:21

Python中编写函数将数据库内容导入到EXCEL的相关文章

Python将数据库内容导入到EXCEL

每次给运营导数据的时候,如果不用工具的话,就是直接生成.csv格式的文件,这样的文件不支持'sheet',每次还有手工进行,相当的不科学,今天试试Python生成excel文件. 写的糙了点,但是这是一个很好的开始! 改进版本:数据库内容到EXCEL #!/usr/bin/env python import xlwt import MySQLdb wbk=xlwt.Workbook() sheet=wbk.add_sheet('sheet 1') sheet.write(0,0,'company

在Python中编写数据库模块的教程

  这篇文章主要介绍了在Python中编写数据库模块的教程,本文代码基于Python2.x版本,需要的朋友可以参考下 在一个Web App中,所有数据,包括用户信息.发布的日志.评论等,都存储在数据库中.在awesome-python-app中,我们选择MySQL作为数据库. Web App里面有很多地方都要访问数据库.访问数据库需要创建数据库连接.游标对象,然后执行SQL语句,最后处理异常,清理资源.这些访问数据库的代码如果分散到各个函数中,势必无法维护,也不利于代码复用. 此外,在一个Web

python中enumerate函数用法实例分析

  本文实例讲述了python中enumerate函数用法.分享给大家供大家参考.具体分析如下: 今日发现一个新函数 enumerate .一般情况下对一个列表或数组既要遍历索引又要遍历元素时,会这样写: ? 1 2 for i in range (0,len(list)): print i ,list[i] 但是这种方法有些累赘,使用内置enumerrate函数会有更加直接,优美的做法,先看看enumerate的定义: ? 1 2 3 4 5 6 7 def enumerate(collect

Python中编写ORM框架的入门指引

  这篇文章主要介绍了Python中编写ORM框架的入门指引,示例代码基于Python2.x版本,需要的朋友可以参考下 有了db模块,操作数据库直接写SQL就很方便.但是,我们还缺少ORM.如果有了ORM,就可以用类似这样的语句获取User对象: ? 1 user = User.get('123') 而不是写SQL然后再转换成User对象: ? 1 2 u = db.select_one('select * from users where id=?', '123') user = User(*

Python中zip()函数用法实例教程_python

本文实例讲述了Python中zip()函数的定义及用法,相信对于Python初学者有一定的借鉴价值.详情如下: 一.定义: zip([iterable, ...])zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表).若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同.利用*号操作符,可以将list unzip(解压). 二.用法示例: 读者看看下面的例子,对

python中dir函数用法分析_python

本文实例讲述了python中dir函数用法.分享给大家供大家参考.具体分析如下: dir 函数返回任意对象的属性和方法列表, 包括模块对象.函数对象.字符串对象.列表对象.字典对象 ...... 相当多的东西. dir函数示例: >>> li = [] >>> dir(li) ['append','count','extend','index','insert', 'pop','remove','reverse','sort'] >>> d = {}

python中Genarator函数用法分析_python

本文实例讲述了python中Genarator函数用法.分享给大家供大家参考.具体如下: Generator函数的定义与普通函数的定义没有什么区别,只是在函数体内使用yield生成数据项即可.Generator函数可以被for循环遍历,而且可以通过next()方法获得yield生成的数据项. def func(n): for i in range(n): yield i for i in func(3): print i r=func(3) print r.next() print r.next

php 中fgetcsv函数将csv文件导入mysql数据库

在处理大批量excel数据到mysql数据库时,用php自带的fgetcsv函数先从csv文件中逐行获取数据,再配合sql语句导入数据库,如果遇到了乱码问题,可以使用iconv函数进行转码. 代码示例:  代码如下 复制代码 <?php $row = 1; $handle = fopen("test.csv","r"); while ($data = fgetcsv($handle, 1000, ",")) {//1000为csv文件总行数

用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化_python

实例的背景说明 假定一个个人信息系统,需要记录系统中各个人的故乡.居住地.以及到过的城市.数据库设计如下: Models.py 内容如下:   from django.db import models class Province(models.Model): name = models.CharField(max_length=10) def __unicode__(self): return self.name class City(models.Model): name = models.