day5 数据库 redis excel 的操作

 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)  #看操作的时间

  

猜你喜欢

转载自www.cnblogs.com/11-pythong/p/11761373.html