python3.5入门笔记(17) 数据库,excel导入实例

# 1、使用 pymysql 连接MySQL,并进行以下操作
# 1)创建一个,部门表(dept): 部门编号(dept_no),部门名称(dept_name),部门地址(dept_addr)
# 员工表(emp): 员工编号(emp_no),员工姓名(emp_name),员工工作(emp_job),员工直属领导编号(emp_mgr_no),
# 入职时间(emp_hiredate),工资(emp_sal),奖金(emp_comm)、所属部门编号(dept_no)
# 2)设置员工表 dept_no 与 dept表的外键关系
# 3)部门表中,分别插入 行政部、运营部、研发中心 信息
# 4)员工表中,分别根据各个部门插入10条数据
#coding=utf-8
import pymysql
try:
    db = pymysql.connect(host="localhost", user="root",password="123456",database="test",charset="utf8")
    print('数据库连接成功')
    cur=db.cursor()
    print('获取游标成功')
except:
    print('数据库连接失败')
try:
    cur.execute("create table dept(dept_no int(10) , dept_name varchar(30) , "
                "dept_addr varchar(50) , primary key(dept_no,dept_name));")
    print('创建dept表成功')
except:
    print('创建dept表失败或已经存在该表')
try:
    cur.execute("create table emp(emp_no int(10) , emp_name varchar(30) , emp_job varchar(30) , "
                "emp_mgr_no int(10) , emp_hiredate date , emp_sal decimal(12,2) , "
                "emp_comm decimal(12,2) , dept_no int(10) , primary key(emp_no,emp_name) ,"
                "foreign key(dept_no) references dept(dept_no));")
    print('创建emp表成功')
except:
    print('创建emp表失败或已经存在该表')
try:
    sql="insert into dept(dept_no,dept_name) values (%s,%s);"
    data=[(101,'行政部'),(102,'运营部'),(103,'研发中心')]
    cur.executemany(sql,data)
    db.commit()  #需要提交事务数据才能在数据库显示
    print('插入行政部、运营部、研发中心成功')
except:
    db.rollback()  #发生错误回滚事务
    print("插入行政部、运营部、研发中心失败")
try:
    sql="insert into dept(dept_no,dept_name) values (%s,%s);"
    data=[(101,'行政部'),(102,'运营部'),(103,'研发中心')]
    cur.executemany(sql,data)
    db.commit()  #需要提交事务数据才能在数据库显示
    print('插入行政部、运营部、研发中心成功')
except:
    db.rollback()  #发生错误回滚事务
    print("插入行政部、运营部、研发中心失败")
count = 0
while count<=2:
    sql_select = "select * from dept;"
    cur.execute(sql_select)
    date_select = cur.fetchall()
    print("给%s插入10条数据" % date_select[count][1])
    try:
        sql_insert = "insert into emp(emp_no,emp_name,dept_no) values(%s,%s,%s);"
        for i in range(0,10):
            date_insert = []
            date_insert.append('1010' + str(i))
            date_insert.append(date_select[count][1] + '员工' + str(i))
            date_insert.append(date_select[count][0])
            cur.execute(sql_insert,date_insert)
            db.commit()
            print('为%s添加第%d条记录'%(date_select[count][1],i+1) )
    except Exception as e:
        db.rollback()
        print('出错回滚完成', e)
    count += 1
cur.close()
db.close()
# 2、将上面数据库中2张表的信息分别写入Excel。
# #coding=utf-8
import pymysql
import openpyxl
from openpyxl import Workbook

try:
    db = pymysql.connect(host="localhost", user="root",password="123456",database="test",charset="utf8")
    print('数据库连接成功')
    cur=db.cursor()
    print('获取游标成功')
except:
    print('数据库连接失败')
try:
    sql_select1 = "select * from dept;"
    cur.execute(sql_select1)
    date_select1 = cur.fetchall()
    print('获取dept表数据',date_select1)
    sql_select2 = "select * from emp order by dept_no;"
    cur.execute(sql_select2)
    date_select2 = cur.fetchall()
    print('获取emp表数据', date_select2)
except Exception as e:
    print('数据库获取数据失败',e)
try:
    wb = Workbook()
    wb.save(r'test.xlsx')
    ws1=wb.create_sheet('emp',0)
    print('创建sheet页emp成功')
    ws2=wb.create_sheet('dept',1)
    print('创建sheet页dept成功')
    wb.save(r'test.xlsx')
except Exception as e:
    print('创建excel失败',e)
try:
    wb = openpyxl.load_workbook(r'test.xlsx')
    ws1 = wb.worksheets[0]
    for r in range (1,len(date_select1)+1):
        for c in range(1,len(date_select1[0])+1):
            ws1.cell(row=r,column=c,value=date_select1[r-1][c-1])
    print('导入dept表数据')
    ws2 = wb.worksheets[1]
    for rr in range (1,len(date_select2)+1):
        for cc in range(1,len(date_select2[0])+1):
            ws2.cell(row=rr,column=cc,value=date_select2[rr-1][cc-1])
    print('导入empt表数据')
    wb.save(r'test.xlsx')
except Exception as e:
    print('导入表数据失败',e)
# 3、使用 requests + lxml 将 https://xingzhengquhua.51240.com/ 目标地址的行政区划信息,写入到 excel或数据库中
#coding=utf-8
import openpyxl
import requests
from lxml import etree
#提取数据到列表
res = requests.get('https://xingzhengquhua.51240.com/')
html = etree.HTML(res.text)
list1=[]
list2=[]
list1.append('所辖行政区')
list2.append('行政区划代码')
datalist01 = html.xpath(r'//table//table//td[1]/a/text()')#获取当前页面下的表格下的表格中的a标签的文字
datalist02 = html.xpath(r'//table//table//td[2]/a/text()')#获取当前页面下的表格下的表格中的a标签的文字
for i in range(1,len(datalist01)):
    list1.append(str(datalist01[i]))
for i in range(0, len(datalist02)):
    list2.append(str(datalist02[i]))
list3=[list1,list2]
print(list3)
#将列表数据转至excel
wb = openpyxl.Workbook()
wb.save(r'test01.xlsx')#创建工作簿
ws = wb.worksheets[0]
for r in range (1,len(list3)+1):
    for c in range(1,len(list3[0])+1):
        ws.cell(row=c,column=r,value=list3[r-1][c-1])
wb.save(r'test01.xlsx')
发布了28 篇原创文章 · 获赞 1 · 访问量 3179

猜你喜欢

转载自blog.csdn.net/pdd51testing/article/details/88944815