python3将excel表格导入mongodb/mysql数据库

5 篇文章 0 订阅
1 篇文章 0 订阅

话不多说,直接上代码

1.mongodb:

import xlrd
import json
from pymongo import MongoClient

def dump_excel(file):
    # 连接数据库
    client = MongoClient('localhost',27017)
    db = client.scrapy
    account = db.user
    data = xlrd.open_workbook(file)
    table = data.sheets()[0]
    # 读取excel第一行数据作为存入mongodb的字段名
    rowstag = table.row_values(0)
    nrows = table.nrows
    returnData = {}
    for i in range(1,nrows):
        # 将字段名和excel数据存储为字典形式,并转换为json格式
        returnData[i] = json.dumps(dict(zip(rowstag,table.row_values(i))))
        # 通过编码还原数据
        returnData[i] = json.loads(returnData[i])
        account.insert(returnData[i])
    return returnData

if __name__ == '__main__':
    dump_excel('test.xls')

 

2.mysql:

import xlrd
import pymysql

def dump_excel(cur,file):
    query = """INSERT INTO user(u_id,name,address,sex) values(%s,%s,%s,%s)"""
    data = xlrd.open_workbook(file)
    sheets = data.sheet_names()
    datasheet = data.sheet_by_name(sheets[0])
    nrows = datasheet.nrows
    ncols = datasheet.ncols
    for i in range(1,nrows):
        # row = datasheet.row(i)
        # print(row)
        sqlstr = []
        for j in range(0,ncols):
            sqlstr.append(datasheet.cell_value(i,j))
        valuestr = [int(sqlstr[0]), str(sqlstr[1]), str(sqlstr[2]), str(sqlstr[3])]
        cur.execute(query,valuestr)

def data_contnect():
    con = pymysql.connect(
        host='localhost', port=3306, user='root', password='root',  charset='utf8mb4'
    )
    cur = con.cursor()
    cur.execute("drop database if exists scrapy")
    cur.execute("create database scrapy")
    cur.execute("use scrapy")

    sql = """create table if not exists user(u_id INT (11),name VARCHAR (20),address VARCHAR (45),sex VARCHAR (2))"""
    cur.execute(sql)

    dump_excel(cur,'test.xls')

    cur.close()
    con.commit()
    con.close()

if __name__ == '__main__':
    data_contnect()

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值