python学习笔记(五)导⼊模块原理、⼿动安装模块导出模块、操作数据库、读写excel、。。。
1.导⼊模块原理
# 1.python中模块类型:
# python中模块分为3种,1、标准模块(python⾃带的模块如:os time等),2、第三⽅模块(如pymysql、xlrd等), 3、⾃⼰写的模块(⼀个python ⽂件就是⼀个模块)
# 2.导⼊导⼊模块的实质
# 就是把所导⼊的模块运⾏了⼀遍
# 3.导⼊模块的顺序
# 1,先从当前⽬录下
# 2,再从python的环境变量下(python环境变量查看⽅法:import sys print(sys.path)),模块放到环境变量中任意⼀个⽬录下都可以
# ⽽且放到环境变量下导⼊的时候会⾃动提⽰,⽽且不会像导⼊当前⽬录下python⽂件那样被标红
⾊波浪线(虽然不影响执⾏^_^)
# 注意:2中所说的环境变量跟咱们系统的环境变量不是⼀回事
# 4.if __name__ == '__main__':
# 的作⽤就别的⽂件⾥⾯导⼊这个python⽂件的时候
# 不会执⾏if __name__ ⾥⾯代码
# ⽽当前⽂件的测试代码,如函数调⽤可以写在这⾥就算忘记删除了,等别⼈调⽤的时候也不会被执⾏
2.⼿动安装模块、导出模块
# 安装第三⽅模块有以下两种⽅法:
# 1,在线安装:执⾏命令 pip install 模块名如果是python的话执⾏命令 pip3 install 模块名(例:pip3 install xlrd)
# 2,⼿动安装(也有2种⽅式)
# 1)下载.whl⽂件到本地
# 执⾏命令 pip install 本地⽂件⽬录(例:pip install e:\\dowloads\\pymysql.whl)
# 2)下载.⽂件
# 1、解压(例:tar -zxvf )
# 2、进⼊解压后的⽂件夹
# 执⾏命令:python setup.py install
# pip list 列出当前安装了哪些模块
# pip freeze > /Users/wangxiaoyu/百度云同步盘/pyton测开/day5/pip_ 把安装的模块导出到执⾏⽂件
# pip intall -r /Users/wangxiaoyu/百度云同步盘/pyton测开/day5/pip_ 把指定⽂件中的所有模块进⾏批量安装
3.操作数据库(mysql数据库,需要实现安装第三⽅模块pymysql)
import pymysql #(不同的数据库需要导⼊不同的模块,⽤法也可能有些区别)
# ==========查询==========
# 1.建⽴链接,port可以不写,默认是3306(是个默认值参数)
conn = t(host='118.26.3.60',port=3306,user='wxy',password='123456',db='python_mysql',charset='utf8')
# 2.建⽴游标
cur = conn.cursor(pymysql.cursors.DictCursor)#设置返回结果为list,list的中的元素为字典格式,conn.cursor()不设置返回结果格式的话,默认返回的是⼆维数组
# 3.执⾏sql----查询
sql = 'select * from app_student where name = "wangxiaoyu"'
# 4.获取sql执⾏结果
print(cur.fetchall())#获取所有结果,结果:[{'id': 387, 'name': 'wangxiaoyu', 'sex': '⼥', 'age': 18, 'addr': '北京', 'grade': '摩羯座', 'phone': '那啥啥', 'gold': 100}]
print(cur.fetchone())#获取⼀条结果,直接是⼀个字典⽽不是在list中,结果:{'id': 387, 'name': 'wangxiaoyu', 'sex': '⼥', 'age': 18, 'addr': '北京', 'grade': '摩羯座', 'phone': '那啥啥', 'gold': 100}
print(cur.fetchmany(2))#如果查询结果是多条的话,这⾥可以选择显⽰⼏条
# 5.关闭游标
cur.close()
# 6.关闭链接
conn.close()
# ==========修改(增加、删除、修改都必须提交后才能真正写到数据库)==========
# ====⽅法1.⼿动提交=======
# 1.建⽴链接,port可以不写,默认是3306(是个默认值参数)
conn = t(host='118.26.3.60',port=3306,user='wxy',password='123456',db='python_mysql',charset='utf8')
# 2.建⽴游标
cur = conn.cursor(pymysql.cursors.DictCursor)#设置返回结果为list,list的中的元素为字典格式,conn.cursor()不设置返回结果格式的话,默认返回的是⼆维数组
# 3.执⾏sql--插⼊
sql = "insert into app_student ( `name`, `sex`, `age`, `addr`, `grade`, `phone`, `gold`) values ( 'wangxiaoyu', '⼥', '18', '北京', '摩羯座', '那啥啥', '100');" ute(sql)
# 4.⼿动提交
connmit();
# 5.关闭游标
cur.close()
# 6.关闭链接
conn.close()
# 测试结果:
# [{'id': 387, 'name': 'wangxiaoyu', 'sex': '⼥', 'age': 18, 'addr': '北京', 'grade': '摩羯座', 'phone': '那啥啥', 'gold': 100}]
# ====⽅法2.⾃动提交=======
#
# 1.建⽴链接,port可以不写,默认是3306(是个默认值参数)
conn =
# 2.建⽴游标
cur = conn.cursor(pymysql.cursors.DictCursor)#设置返回结果为list,list的中的元素为字典格式,conn.cursor()不设置返回结果格式的话,默认返回的是⼆维数组
# 3.执⾏sql--插⼊
sql = "insert into app_student ( `name`, `sex`, `age`, `addr`, `grade`, `phone`, `gold`) values ( 'wxytest1', '⼥', '18', '北京', '摩羯座', '那啥啥', '100');"
# 4.关闭游标
cur.close()
# 5.关闭链接
conn.close()
操作mysql数据库封装函数⼯具
"""
该函数实现了对mysql数据库的正删改查操作,并返回操作结果
"""
import pymysql #操作不同的数据库,导⼊不同的模块,这⾥导⼊操作mysql数据库的模块
def op_mysql(host,username,password,db,sql,port = 3306,many_flag = True):#many_flag true代表返回多条数据,False代表只返回⼀条数据
conn = t(host = host,port = port,user = username,password = password,db = db,charset = 'utf8',autocommit = True)
cur = conn.cursor(pymysql.cursors.DictCursor)
if many_flag:
result = cur.fetchall()
else:
result = cur.fetchone()
cur.close()
conn.close()
return result
# 1.查询--返回多条结果
dict = {'host':'118.26.3.60','port':3306,'username':'wxy','password':'123456','db':'python_mysql','sql':'select * from app_student limit 5 '}
print(op_mysql(**dict))
测试结果:
[{'id': 108, 'name': 'Mike', 'sex': '男', 'age': 18, 'addr': '北京市昌平区', 'grade': '2th', 'phone': '137********', 'gold': 100}, {'id': 109, 'name': 'Michael', 'sex': '男', 'age': 18, 'addr': '北京市昌平区', 'grade': '2th', 'phon
e': '137********', 'gold': 100}, {'id': 110, 'name': '⼩⿊', 'sex': '男', 'age': 18, 'addr': '河南省济源市北海⼤道32号', 'grade': '天蝎座', 'phone': '186********', 'gold': 100}, {'id': 111, 'name': 'xidis', 'sex': '男', 'age': 18, 'addr': '北京市昌平区', 'grade': '天蝎座', 'phone': '186********', 'gold': 100}, {'id': 112, 'name': 'xidis', 'sex': '男', 'age': 18, 'addr': '北京市昌平区', 'grade': '天蝎座', 'phone': 'qqqqqqqqqqq', 'gold': 2147483647}]
# 2.查询--返回1条结果
dict = {'host':'118.26.3.60','port':3306,'username':'wxy','password':'123456','db':'python_mysql','sql':'select * from app_student where
name="wxytest1"','many_flag':False}
print(op_mysql(**dict))
#
# 测试结果:
# {'id': 388, 'name': 'wxytest1', 'sex': '⼥', 'age': 18, 'addr': '北京', 'grade': '摩羯座', 'phone': '那啥啥', 'gold': 100}
dict = {'host':'118.26.3.60','port':3306,'username':'wxy','password':'123456','db':'python_mysql','sql':'update app_student set phone = "就不告诉你" where name = "wxytest1"'}
print(op_mysql(**dict))
# 测试结果:
# ()
# 查询后发现已更改:
# {'id': 388, 'name': 'wxytest1', 'sex': '⼥', 'age': 18, 'addr': '北京', 'grade': '摩羯座', 'phone': '就不告诉你', 'gold': 100}
# 4.新增 `name`, `sex`, `age`, `addr`, `grade`, `phone`, `gold`)
dict = {'host':'118.26.3.60','port':3306,'username':'wxy','password':'123456','db':'python_mysql','sql':'insert into app_student
(`name`,`sex`,`age`,`addr`,`grade`,`phone`,`gold`) VALUES ("wxytest668899","⼥",18,"北京","摩羯座","保密",100)'}
print(op_mysql(**dict))
# 测试结果:
# ()
# 通过查询语句查看:
# [{'id': 400, 'name': 'wxytest668899', 'sex': '⼥', 'age': 18, 'addr': '北京', 'grade': '摩羯座', 'phone': '保密', 'gold': 100}]
# 5.删除
dict = {'host':'118.26.3.60','port':3306,'username':'wxy','password':'123456','db':'python_mysql','sql':'delete from app_student where name = "wxytest668899"'}
print(op_mysql(**dict))
# 测试结果:
# ()
# 通过查询语句查看:
# ()excel从入门到精通百度云
4.读写excel
操作excel
import xlrd
book = xlrd.open_workbook('名单.xlsx')
# sheet = book.sheet_by_index(0)#通过索引⽅式获取sheet
sheet = book.sheet_by_name('⼈员名单')
row = w_values(0)#获取指定⾏的数据 list
col = l_values(0)#获取指定列的数据 list
value = ll(0,0).value #获取指定单元格内容
print(row)
print(col)
print(value)
测试结果:
['姓名', '性别', '年龄', '电话', '地址']
['姓名', 'wangxiaoyu', 'lixiaokai', 'lijunhao', 'lixinran', 'liheping', 'lisan']
姓名
ws)#获取当前sheet中⼀共有多少⾏
ls)#获取当前sheet中⼀共有多少列
测试结果:
7
5
5.循环写⼊excel
book = xlwt.Workbook()#1.创建excel
sheet = book.add_sheet('⼈员名单')#2.创建⼀个sheet表单
title = ['姓名', '性别', '年龄', '电话', '地址']
userinfo = [['wangxiaoyu','⼥',18,'保密哦1','太长了就不说啦1'],['lixiaokai','男',19,'保密哦2','太长了就不说啦2'],['lijunhao','男',5,'保密哦3','太长了就不说啦3']]
# 写title
for rn,row in enumerate(title):
sheet.write(0,rn,row)#3.写⼊内容
# 写单元格
for rn,rows in enumerate(userinfo,1):
for cn,col in enumerate(rows):
sheet.write(rn,cn,col)
book.save('student_info.xls')#4.保存excel
测试结果:
student_info.xls
6.修改excel
import xlrd
from xlutils import copy
#1.获取excel
book = xlrd.open_workbook('student_info.xls')
#2.复制⼀个新的excel
new_book = py(book)
# 3.创建⼀个sheet
sheet = _sheet(0)
addr = ['北京1','北京2','北京3']
for cn,col in enumerate(addr,1):
#4.修改
sheet.write(cn,4,col)
#5.保存
new_book.save('student_info.xls')
测试结果:
student_info.xls
7.写⼊⽇志
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论