背景:
当然可以直接通过navicat导入excel数据,but、、python也得用起来呀
let us go ~
准备:
idea 2020.3
步骤:
File -> Settings -> plugins -> Marketplace
输入 python -> install 安装完重启idea
File -> New -> Project…
此时发现左侧已经有Python选项了,
Project SDK默认我们刚安装的Python最新版本,自己手动安装在本地的可以通过Add Python SDK 选择
然后一路下一步就可以了
我们的任务大致分为两步
1、读excel
2、写DB
读 Excel:
from openpyxl import load_workbook
# 读当前目录下excel
excel = load_workbook('./panda.xlsx')
# ['Sheet1', 'Sheet2', 'Sheet3']
tables = excel.sheetnames
# 表头
table = excel[tables[0]]
# 列数
columns = table.max_column
# 行数
rows = table.max_row
# 逐行读excel
for i in range(1, rows+1):
# 行数组
row = []
# 第一列
column1 = table.cell(row=i, column=1).value
row.append(column1)
# 第二列
column2 = table.cell(row=i, column=2).value
row.append(column2)
# 第三列
column3 = table.cell(row=i, column=3).value
row.append(column3)
# 打印
print(row)
安装pymysql: 同上 pip install pymysql
import pymysql
# 连接db
conn = pymysql.connect(
host="10.10.10.10",
port=3306,
user="panda",
password="panda",
database="panda",
charset="utf8")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()
验证DB连接:新建与DB 交互文件
from panda import dbconfig
# 获取连接
conn = dbconfig.conn
# 获取游标
cursor = dbconfig.cursor
# 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT * from panda_test")
# 使用fetchone 获取一条数据
result = cursor.fetchone()
# 打印结果
print(result)
# 关闭游标
cursor.close()
# 关闭数据库链接
conn.close()
dbconfig.py
import pymysql
# 连接db
conn = pymysql.connect(
host="10.10.10.10",
port=3306,
user="panda",
password="panda",
database="panda",
charset="utf8")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()
db.py
from config import dbconfig
# 获取连接
conn = dbconfig.conn
# 获取游标
cursor = dbconfig.cursor
def insertData(data):
# 表名
table = 'panda_test'
# 列名
keys = ', '.join(data.keys())
# 数据
values = ', '.join(['%s'] * len(data))
try:
print(tuple(data.values()))
# 组装sql
sql = "INSERT INTO {table}({keys}) VALUES ({values})".format(table=table, keys=keys, values=values)
# 执行sql
cursor.execute(sql, tuple(data.values()))
# 提交事务
conn.commit()
# 捕获异常
except Exception as e:
# 打印异常
print("error..", e)
# 回滚
conn.rollback()
panda.py
from openpyxl import load_workbook
from db import db
# 获取连接
conn = db.conn
# 获取游标
cursor = db.cursor
def dealexcel():
# 读当前目录下excel
excel = load_workbook('../excel/panda.xlsx')
# ['Sheet1', 'Sheet2', 'Sheet3']
tables = excel.sheetnames
# 表头
table = excel[tables[0]]
# 行数
rows = table.max_row
# 逐行读excel
for i in range(1, rows+1):
# 行数组
row = []
# 第一列
column1 = table.cell(row=i, column=1).value
row.append(column1)
# 第二列
column2 = table.cell(row=i, column=2).value
row.append(column2)
# 第三列
column3 = table.cell(row=i, column=3).value
row.append(column3)
# 打印行
print(row)
# 组装数据
data = {
'name': str(column1),
'cname': str(column2),
'age': str(column3)
}
# 落库
db.insertData(data)
dealexcel()
# 关闭游标
cursor.close()
# 关闭连接
conn.close()