python excel to mysql
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的更多相关文章
- python2.7爬取豆瓣电影top250并写入到TXT,Excel,MySQL数据库
python2.7爬取豆瓣电影top250并分别写入到TXT,Excel,MySQL数据库 1.任务 爬取豆瓣电影top250 以txt文件保存 以Excel文档保存 将数据录入数据库 2.分析 电影 ...
- xlrd(excel导入mysql数据库)
一.xlrd模块: python 对 excel 文件进行读操作 1.下载xlrd 并安装 http://pypi.python.org/pypi/xlrd wget https://pypi.pyt ...
- python3爬取”理财大视野”中的股票,并分别写入txt、excel和mysql
需求:爬取“理财大视野”网站的排名.代码.名称.市净率.市盈率等信息,并分别写入txt.excel和mysql 环境:python3.6.5 网站:http://www.dashiyetouzi.co ...
- 实战|教你用Python玩转Mysql
爬虫采集下来的数据除了存储在文本文件.excel之外,还可以存储在数据集,如:Mysql,redis,mongodb等,今天辰哥就来教大家如何使用Python连接Mysql,并结合爬虫为大家讲解. 前 ...
- Python中操作mysql的pymysql模块详解
Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...
- Python excel 库:Openpyxl xlrd 对比 介绍
打算用python做一个写mtk camera driver的自动化工具. 模板选用标准库里面string -> Template 即可 但要重定义替换字符,稍后说明 配置文件纠结几天:cfg, ...
- python——django使用mysql数据库(二)
上一篇中,我们已经讲述了如何初始化一个django数据库,这一章就来讲讲在实际的项目中如何使用我们初始化的数据库呢? 如还未进行初始化数据库操作,请参考python——django使用mysql数据库 ...
- python——django使用mysql数据库(一)
之前已经写过如何创建一个django项目,现在我们已经有了一个小骷髅,要想这个web工程变成一个有血有肉的人,我们还需要做很多操作.现在就先来介绍如何在django中使用mysql数据库. 前提:已经 ...
- Python 3 and MySQL
http://stackoverflow.com/questions/4960048/python-3-and-mysql up vote61down votefavorite 20 I am usi ...
随机推荐
- net core Webapi基础工程搭建(七)——小试AOP及常规测试_Part 2
目录 前言 引入 自定义属性 测试 小结 前言 前一篇讲到了中间层的使用,可能不是那么AOP,今天主要来说下一个轻量级的AOP第三方类库AspectoCore. 简单介绍下这个类库,AspectCor ...
- react native Android支持gif和WebP动图
在项目android/app/build.gradle的文件中找到dependencies 支持gif动图加入: implementation 'com.facebook.fresco:animate ...
- Spring学习之旅(十四)--缓存
数据库的读写并发一直都是应用性能的瓶颈所在之一,针对改动频率很小的数据我们应该将他存放到缓存中,减少与数据库的交互. 启用对缓存的支持 Spring 对缓存的支持有两种方式: 注解驱动的缓存 XML ...
- Http协议4个新的http状态码:428、429、431、511;
1.428 Precondition Required (要求先决条件) 先决条件是客户端发送 HTTP 请求时,必须要满足的一些预设条件.一个好的例子就是 If-None-Match 头,经常用在 ...
- PHP CURL根据详细地址获取腾讯地图经纬度
<?php $address = "广东省广州市天河区"; $point = getPoint($address); var_dump($point);//输出经纬度 /** ...
- effective java 3th item1:考虑静态工厂方法代替构造器
传统的方式获取一个类的实例,是通过提供一个 public 构造器.这里有技巧,每一个程序员应该记住.一个类可以对外提供一个 public 的 静态工厂方法 ,该方法只是一个朴素的静态方法,不需要有太多 ...
- ccflow关于流程引擎的父子流程的基本概念
关键字:驰骋BPM jflow,ccflow, 驰骋工作流引擎 父子流程概念:在管理活动中,通用的部分,公用的部分,可以被重复执行的部分的流程管理活动我们把他独立出来,成为子流程,可以被其他流程的管理 ...
- 洛谷-P1414 又是毕业季II -枚举因子
P1414 又是毕业季II:https://www.luogu.org/problemnew/show/P1414 题意: 给定一个长度为n的数列.要求输出n个数字,每个数字代表从给定数列中最合理地取 ...
- hdu 2050 折线分割平面 dp递推 *
折线分割平面 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- yzoj P2349 取数 题解
题意 1到n个自然数中选k个自然数要求两两不相邻,问有多少种方法,模m eg(1 3 5 ) 又是一道打表规律题,正常解法dp可以通过前缀和优化到O(N* K).另外我们可以重新定义F[I,J]表示从 ...