import sys
import xlrd
import pymysql
import math
import json
from collections import OrderedDict # json 转换成对像
class JSONObject:
def __init__(self, d):
self.__dict__ = d # 异常处理
class MyError(Exception):
def __init__(self, v):
self.value = v def __str__(self):
return repr(self.value) # 读取数据
config = None with open('config.json', 'r') as f:
try:
config = json.load(f, object_pairs_hook=OrderedDict)
except IOError as err:
print("OS error: {0}".format(err))
sys.stdin.readline()
finally:
if sys.exc_info()[0] is not None:
print("else Unexpected error:", sys.exc_info())
sys.stdin.readline()
# raise MyError('else Unexpected error') fileList = []
# print(config)
for k in config:
if k == 'fileList':
for d in config[k]:
if config[k][d] == 1:
fileList.append(d) # 建立mysql连接
conn = pymysql.connect(
host=config['host'],
user=config['user'],
passwd=config['passwd'],
db=config['db'],
port=config['port'],
charset=config['charset']
) # 获得游标
cur = conn.cursor() for filename in fileList:
cur.execute('delete from ' + filename);
print(filename + ' 删除数据!')
book = xlrd.open_workbook('excel/' + filename + '.xlsx')
sheet = book.sheets()[0]
ops = []
nCols = sheet.ncols # 获取列表的有效列数
colName = 'insert into ' + filename
first = 0
flag = ','
# 表中的数据有单引号,直接拼接处理
if filename == 'tbl':
names = []
for r in range(0, sheet.nrows):
if first != 0:
flag = '^'
values = ''
itemSql = colName
for col in range(0, nCols):
value = sheet.cell(r, col).value
if isinstance(value, int):
values += str(math.floor(value)) + flag
elif isinstance(value, float):
values += str(math.floor(value)) + flag
else:
values += value + flag values = values[0:-1] # 第0行为字段行
if first == 0:
colName += '(' + values + ')' + ' values ('
else:
for d in values.split(flag):
itemSql += '"' + d + '",'
itemSql = itemSql[0:-1]
itemSql += ');'
# print(itemSql)
try:
cur.execute(itemSql)
except IOError as err:
print("OS error: {0}".format(err))
sys.stdin.readline()
finally:
if sys.exc_info()[0] is not None:
print("finally Unexpected error:", sys.exc_info())
sys.stdin.readline() first = 1 print(filename + ' 导入新数据!')
else:
for r in range(0, sheet.nrows):
if first != 0:
flag = '&'
values = ''
for col in range(0, nCols):
value = sheet.cell(r, col).value
if isinstance(value, int):
values += str(math.floor(value)) + flag
elif isinstance(value, float):
values += str(math.floor(value)) + flag
else:
values += value + flag values = values[0:-1] if first == 0:
colName += '(' + values + ')' + ' values ('
for j in range(0, nCols):
if j == nCols - 1:
colName += '%s)'
else:
colName += '%s, '
else:
ops.append(values.split(flag)) first = 1 # print(colName)
# print(ops)
try:
cur.executemany(colName, ops)
print(filename + ' 导入新数据!')
except IOError as err:
print("OS error: {0}".format(err))
sys.stdin.readline()
finally:
if sys.exc_info()[0] is not None:
print("finally Unexpected error:", sys.exc_info())
sys.stdin.readline() cur.close()
conn.commit()
conn.close() print('导入完成, 按任意键关闭...')
sys.stdin.readline()

python excel to mysql的更多相关文章

  1. python2.7爬取豆瓣电影top250并写入到TXT,Excel,MySQL数据库

    python2.7爬取豆瓣电影top250并分别写入到TXT,Excel,MySQL数据库 1.任务 爬取豆瓣电影top250 以txt文件保存 以Excel文档保存 将数据录入数据库 2.分析 电影 ...

  2. xlrd(excel导入mysql数据库)

    一.xlrd模块: python 对 excel 文件进行读操作 1.下载xlrd 并安装 http://pypi.python.org/pypi/xlrd wget https://pypi.pyt ...

  3. python3爬取”理财大视野”中的股票,并分别写入txt、excel和mysql

    需求:爬取“理财大视野”网站的排名.代码.名称.市净率.市盈率等信息,并分别写入txt.excel和mysql 环境:python3.6.5 网站:http://www.dashiyetouzi.co ...

  4. 实战|教你用Python玩转Mysql

    爬虫采集下来的数据除了存储在文本文件.excel之外,还可以存储在数据集,如:Mysql,redis,mongodb等,今天辰哥就来教大家如何使用Python连接Mysql,并结合爬虫为大家讲解. 前 ...

  5. Python中操作mysql的pymysql模块详解

    Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...

  6. Python excel 库:Openpyxl xlrd 对比 介绍

    打算用python做一个写mtk camera driver的自动化工具. 模板选用标准库里面string -> Template 即可 但要重定义替换字符,稍后说明 配置文件纠结几天:cfg, ...

  7. python——django使用mysql数据库(二)

    上一篇中,我们已经讲述了如何初始化一个django数据库,这一章就来讲讲在实际的项目中如何使用我们初始化的数据库呢? 如还未进行初始化数据库操作,请参考python——django使用mysql数据库 ...

  8. python——django使用mysql数据库(一)

    之前已经写过如何创建一个django项目,现在我们已经有了一个小骷髅,要想这个web工程变成一个有血有肉的人,我们还需要做很多操作.现在就先来介绍如何在django中使用mysql数据库. 前提:已经 ...

  9. Python 3 and MySQL

    http://stackoverflow.com/questions/4960048/python-3-and-mysql up vote61down votefavorite 20 I am usi ...

随机推荐

  1. Mac查看及清理QQ、微信之前下载的图片、视频或DB等

    之前写过一篇清理Mac空间的文章: Mac系统清理.占用空间大.空间不够.查看系统文件大小分布 其实这篇文章不是太全,有些资源还是清理不彻底,正好前段时间需要找微信下载的资源,其实可以算作空间清理的续 ...

  2. RN 性能优化

    按需加载: 导出模块使用属性getter动态require 使用Import语句导入模块,会自动执行所加载的模块.如果你有一个公共组件供业务方使用,例如:common.js import A from ...

  3. vue-cli3 按需引入element-ui

    按照官网的教程:按需引入需要借助:babel-plugin-component 安装:babel-plugin-component 注意:官网是修改 .babelrc 文件,我这里为了方便就直接修改 ...

  4. Python数据分析之numpy数组全解析

    1 什么是numpy numpy是一个在Python中做科学计算的基础库,重在数值计算,也是大部分Python科学计算库的基础库,多用于大型.多维数据上执行数值计算. 在NumPy 中,最重要的对象是 ...

  5. python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)

    1. 场景描述 一直做java,因项目原因,需要封装一些经典的算法到平台上去,就一边学习python,一边网上寻找经典算法代码,今天介绍下经典的K-means聚类算法,算法原理就不介绍了,只从代码层面 ...

  6. 剑指Offer(二十一):栈的压入、弹出序列

    剑指Offer(二十一):栈的压入.弹出序列 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/b ...

  7. linux安装man中文手册并保留英文man手册

    大家都知道学习linux系统,查找man手册帮助是非常重要的,然而默认linux的man手册是英文文档,快速阅读英文man固然重要,不过配置好中文man也可以让自己更快速地学习!当然英文学习大家还是不 ...

  8. PHP 仿网易云的评论盖楼

    一.简要 第一次做这种设计,当然有许多不足,希望多多指出. 评论盖楼,就是每条评论一个楼层,而楼层里面可以嵌套很多引用的评论,直接上图 A:牛什么牛(见图 Top4) B回复A:好牛啊.(所以这里就嵌 ...

  9. ES6之解构

    1.ES6允许按照一定的模式,从数组中和对象中提取值,对变量进行赋值,这种称为解构(Distructuring): let [a,b,c] = [3,5,6];// 相当于 a=3,b=5,c=6 本 ...

  10. 分享一个赚钱方法:用趣分类app在家轻松赚钱

    什么是趣分类 近期,垃圾分类是社会各界和广大市民关心的一个热门话题,随着垃圾分类工作的推进,各地都掀起学习垃圾分类的热潮.为了我们的美好生活,打响"垃圾分类"这场硬仗刻不容缓.据了 ...