import xlwt (写exce )
book = xlwt.Workbook() 建了一个Excel sheet = book.add_sheet('sheet') 加一个sheet 页
sheet.write(0,0,'名字') sheet.write(1,0,'名字1') sheet.write(2,0,'名字'2) 写完一列
sheet.write(0,1,'手机号') sheet.write(1,1,'111') sheet.write(1,1,'223') 写完第二列
book.save('student.xls')
向excel中写内容:
利用enumerate() 来写
for row,stu in enumerate(stus):#控制行
for col,field in enumerate(stu):#控制列的
sheet.write(row,col,field)
book.save("students.xls")
xlrd(excel的读取)
import xlrd
book = xlrd.open_workbook(r'/Users/nhy/Desktop/中奖名单.xlsx') #打开excel
sheet = book.sheet_by_index(0)
# sheet = book.sheet_by_name('sheet1') #选择sheet页,可以根据下标,也可以根据名字
result = sheet.cell(0,0).value #某个单元格的内容
print('某个单元格的内容',result)
row = sheet.row_values(0) #整行的内容
print('某一行的内容',row)
col = sheet.col_values(0) #整行的内容
print('某一列的内容',col)
print(sheet.nrows) #总共多少行
print(sheet.ncols) #总共多少列
for row_num in range(1,sheet.nrows):
print(sheet.row_values(row_num))
---------------------------------------------------------------------------------------------------------------------------------------
连接MySQL import pymysql (在python里也可以直接连接数据库)
import pymysql
ip ="118.24.3.40"
user = 'jxz'
password="123456"
db='jxz'
port=3306
charset='utf8'
conn = pymysql.connect(host=ip,user=user,password=password,db=db,port=port,charset=charset,autocommit=True)#建立连接 autocommit= True 自动提交
cur = conn.cursor(pymysql.cursors.DictCursor) #游标 返回的数据 是字典类型 one 是 {id:1,name:gss} all、many 返回 的字典类型放到列表中。
sql = 'select * from app_myuser limit 5;' cur.execute(sql)#执行sql语句,insert 、update 、delete #conn.commit() #执行完之后,要commit下才能同步到数据里
one = cur.fetchone() #获取一条数据,放到元组中
many = cur.fetchmany(2) #获取2条数据,放到元组中
all= cur.fetchall() #获取所有的数据,放到元组中。 也会有指针
cur.close()#关闭游标
conn.close()#关闭连接
print(one)
print(many)
print(all)
def op_mysql(sql):
db_info = {'user': 'jxz', 'password': '123456','host': '118.24.3.40', 'db': 'jxz', 'port': 3306, 'charset': 'utf8','autocommit': True}
conn = pymysql.connect(**db_info) # 建立连接
cur = conn.cursor(pymysql.cursors.DictCursor) # 游标
cur.execute(sql) # 执行sql语句,insert 、update 、delete
result = cur.fetchall()
cur.close()
conn.close()
return result
op_mysql(sql) #建立连接写sql语句。
----------------------------------------------------------------------------------------------------------------
md5 加密(不管字符串的长度有多长md5加密的长度都是32位)
sha256() sha224() 和md5一样不过是长度更长
import hashlib
对 s = '123' 加密 m = hashlib.md5(s.encode()) #加密要加encode() 字符串变为bytes二进制类型 才能加密 result = m.hexdigest() #获取加密后的结果
对文件进行加密
加盐,对同一个字符串,加密方式相同,加密的结果都是一样的。
import hashlib #写一函数,传入的内容进行加密
def md5(s,,salt=''):
new_s = str(s) +salt
m = hashlib.md5(new_s.encode())
return m.hexdigest()
import base64 #能加密也能解密 字符串越长,加密的也越长
---------------------------------------------------------------------------------------------------------
操作redis 非关系型数据库 Redis (数据存在内容上,每s达到10w次的读写) mongodb (存磁盘上)
r.flushall()清空所有数据库(0-15) r.flushdb()清空当前数据 r.exists()判断key是否存在 r.keys()获取当前数据库的所key r.type('name')获取的key的类型
字符串类型 set 时一个key 一个value
-------------------------------
哈希类型 传值是 r.hset(key,key1,value) r.hget(key,key1) 得到某个数据 r.hdel(key,key1,key2)删除数据
-------------------------------------------------------------------------------------------------------------------------------------------------------
迁移redis
d = {'kdk':123,'kk':888} r.hmset(key,d)#对于哈希类型,后面的可以直接传一字典进去
---------------
#管道 提升性能 ,批量执行数据速度很快 pipeline = r.pipeline()#建立一个管道 先把要写的内容放到pipeline,最后才操作执行 pipeline.excute() 这样只操作一次redis
pipeline = r.pipeline() #建立管道
l = range(500)
start_time = time.time()
for i in l:
pipeline.set('key%s'%i,str(i)) #数据先放管道里
pipeline.execute()#执行管道
print(time.time()-start_time) #看操作的时间