python编程:excel文件操作,redis数据库,接口开发

1、操作mysql

import pymysql
# 1、连上数据库  账号、密码 ip 端口号 数据库
#2、建立游标
#3、执行sql
#4 、获取结果
# 5、关闭游标
#6、连接关闭
coon = pymysql.connect(
   host=‘数据库ip‘,user=‘jxz‘,passwd=‘123456‘,
   port=3306,db=‘jxz‘,charset=‘utf8‘
   #port必须写int类型,
   #charset这里必须写utf8
)
cur = coon.cursor() #建立游标
# cur.execute(‘select * from stu;‘)#执行sql语句
# cur.execute(‘insert into stu (id,name,sex) VALUE (1,"蓝波湾","男");‘)
username = ‘nhy‘
pwd=‘123456‘
sql = ‘select * from nhy where name="%s"  and pwd = "%s "‘%(username,pwd)
cur.execute(sql)
# select * from nhy where username="nhy" and pwd="xxxx";
# delete update insert
# coon.commit()  #必须得coomit
#delete update insert 语句需要commit才能生效
res = cur.fetchall()  #获取所有返回的结果
print(res)
if res:
   print(‘用户已存在‘)
else:
   print(‘用户不存在!‘)
cur.close()#关闭游标
coon.close()#关闭连接

知识点1:

cur = coon.cursor(cursor=pymysql.cursors.DictCursor)

建立游标的时候指定了游标类型,返回的就是一个字典了。

fetchall() #获取到这个sql执行的全部结果,它把数据库表里面的每一行数据放到一个list里面

[ [‘1‘,‘2‘,‘3‘] ] [{},{},{}]

fetchone() #获取到这个sql执行的一条结果,它返回就只是一条数据

如果sql语句执行的结果是多条数据的时候,那就用fetchall()

如果你能确定sql执行的结果就只有一条,那么就用fetchone()

2、将数据库的数据导出为excel文档 ,示例:

# 需求:只要你传入一个表名,就能把所有的数据导入出来,字段名是excel的表头
# 1、要动态获取到表的字段 cur.description能获取到表的字段
#  fileds = [ filed[0] for filed in cur.description ]
# 2、获取数据了  select * from "%s"  % table_name
# 3、循环写入excel

import pymysql
import xlwt
def export_excel(table_name):
    host, user, passwd, db = ‘数据库ip‘, ‘jxz‘, ‘123456‘, ‘jxz‘
    coon = pymysql.connect(user=user, host=host, port=3306, passwd=passwd, db=db, charset=‘utf8‘)
    #cur = coon.cursor(cursor=pymysql.cursors.DictCursor)
    cur=coon.cursor()#建立游标,指定cursor类型返回的是字典

    sql=‘select * from %s;‘%table_name
    cur.execute(sql)
    # fileds=[]
    # for filed in cur.desription:
    #     fileds.append(filed[0])
    fileds=[filed[0] for filed in cur.description]#列表生成式,与上面三行代码效果一样,获取所有的字段
    all_data=cur.fetchall()
    book=xlwt.Workbook()
    sheet=book.add_sheet(‘sheet1‘)
    # col=0
    # for filed in fileds:
    #     sheet.write(0,col,filed)
    #     col+=1
    for col,filed in enumerate(fileds):#写表头的
         sheet.write(0,col,filed)
    #print(all_data)
    row=1#行数,第一行为字段名
    for data in all_data:#行
        for col,filed in enumerate(data):#控制列
            sheet.write(row,col,filed)
        row+=1#每次写完一行,行就加1
    book.save(‘%s.xls‘%table_name)
export_excel(‘app_student‘)

知识点1:

enumerate([list,list2]) #循环的时候,直接获取到下标,和值

for index,value in enumerate([list,list2]):

print(index,vlaue)

知识点2:双层循环,先循环里面的,再循环外面的

for i in range(5):

for j in range(3):#双层循环

print(j)

3、读excel文件内容,示例:

import xlrd
book = xlrd.open_workbook(‘app_student.xls‘)
sheet = book.sheet_by_index(0)
sheet2 = book.sheet_by_name(‘shee1‘)
print(sheet.cell(0,0).value) #指定sheet页里面行和列获取数据
print(sheet.cell(1,0).value) #指定sheet页里面行和列获取数据
print(sheet.row_values(0)) #这个获取到第几行的内容
print(sheet.row_values(1)) #这个获取到第几行的内容
print(sheet.nrows) #获取到excel里面总共有多少行
for i in range(sheet.nrows):  #循环获取到每行数据
   print(sheet.row_values(i))
print(sheet.ncols)  #总共多少列
print(sheet.col_values(0)) #取第几列的数据

4、修改excel文件,示例:

#import xlutils,xlrd#xlutils模块不能直接导入使用
import xlrd
from xlutils import copy
book=xlrd.open_workbook(‘app_student.xls‘)
#先用xlrd模块,打开一个excel
new_book=copy.copy(book)
#通过xlutils这个模块里面的copy方法,复制一份excel
sheet=new_book.get_sheet(0)#是xlutils的方法,获取到sheet页
# sheet.write(0,0,‘编号‘)
# sheet.write(0,1,‘名字‘)
# sheet.write(0,2,‘性别‘)
lis = [‘编号‘,‘名字‘,‘性别‘,‘年龄‘,‘地址‘,‘班级‘,‘手机号‘,‘金币‘]
# for i in range(sheet.nrow):
#     sheet.write(0,i,row_value(i))
for col,filed in enumerate(lis):#enumerate([list,list2])  #循环的时候,直接获取到下标和值
    sheet.write(0,col,filed)
new_book.save(‘app_student.xls‘)

二、redis数据库操作

1、redis数据库概念

redis也是一个非关系型数据库。

关系型数据库

mysql、oracle、sql server、db2、sqlite

sql

数据存在磁盘上

非关系型数据库

没有表

没有sql语句

key-value 类似字典

取数据方便\速度快

类型有:mongodb、redis

get(‘k‘)

set(‘xx‘)

redis数据全部都是存在内存里面。

redis本身性能是非常好的,每秒支持30w次的读写。

2、redis增删改查

import redis

r = redis.Redis(host=‘数据库ip‘,password=‘HK139bc&*‘,db=1,port=6379)

#增删改查
# r.set(‘niuhanyang‘,‘帅!‘) #数据库里面新增一个值
#修改也是set
# r.delete(‘niuhanyang‘)
#r.setex(‘python_123‘,‘哈哈哈‘,20)  #设置key的失效时间,最后这个参数是秒
# hwt = r.get(‘hwt‘)
# print(hwt.decode())
# print(r.keys(‘*xxx*‘))#获取到所有的key
# print(r.get(‘sdfsdf‘))
# r.set(‘天蝎座:mpp‘,‘呵呵呵‘)
# r.get(‘天蝎座:mpp‘)

# 上面操作都是针对 string类型
# for k in r.keys():  #删除所有的key
#  r.delete(k)

# 哈希类型  hash   嵌套字典
# r.hset(‘stu_info‘,‘刘伟‘,‘1m8 100w存款‘)
# r.hset(‘stu_info‘,‘张流量‘,‘浪,为了不交作业,故意让狗咬他‘)
# r.hset(‘stu_info‘,‘董春光‘,‘为了不交作业,找了一条狗咬张流量,然后陪张流量去医院‘)
# print(r.hget(‘stu_info‘,‘张流量‘).decode())  #指定大key和小key获取对应的数据
# print(r.hgetall(‘stu_info‘))  #获取里面所有的k和-v
# stu_info  = r.hgetall(‘stu_info‘)
# r.hdel(‘stu_info‘,‘gyx‘)  #删除指定key
# r.delete(‘stu_info‘)  #删除整个key
r.expire(‘aaa‘,100) #第一个key设置失效时间
new_stu_info = {}
# for k,v in stu_info.items():
#  new_stu_info[k.decode()] = v.decode()
# print(new_stu_info)

# print(r.type(‘stu_info‘))  #查看key是什么类型的
# print(r.type(‘zll‘))

# s=‘呵呵‘
# s.encode() #把字符串转成二进制
# hwt = b‘sdfsdfsdf‘
# hwt.decode()  #把bytes类型转成字符串

3、redis操作练习:把mysql数据库的这个表里面的数据存到redis里面

#pymysql、json、redis
#1、连mysql数据库,查到数据库里面所有的数据,游标类型要用pymysql.curosrs.DictCour
#2、查到所有数据   [ {"id":1,"passwd":"49487dd4f94008a6110275e48ad09448","username":"niuhayang","is_admin":1}]
#3、循环这个list,取到usernamer,把username当做key
#4、再把这个小字典转成json,存进去就ok。
import pymysql,json,redis
r = redis.Redis(host=‘数据库ip‘,password=‘HK139bc&*‘,db=1,port=6379)
conn = pymysql.connect(host=‘数据库ip‘‘,user=‘jxz‘,passwd=‘123456‘,db=‘jxz‘,charset=‘utf8‘)
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
cur.execute(‘select * from my_user;‘)
all_data = cur.fetchall()
for data in all_data:
   k = data.get(‘username‘)
   r.hset(‘stu_info_nhy‘,k,json.dumps(data))#把字典转成json串
cur.close()
conn.close()

三、接口开发

1、get接口,代码示例:

import flask,json
#__name__,代表当前这个Python文件

server=flask.Flask(__name__)#把当前这个python文件当做一个服务
#ip:8000/index?uge
@server.route(‘/index‘,methods=[‘get‘])#把一个函数变为接口
def index():
    res={‘msg‘:‘这是我开发的第一个接口‘,‘msg_code‘:0}
    return json.dumps(res,ensure_ascii=False)
server.run(port=8888,debug=True)

在浏览器输入接口URL地址:http://127.0.0.1:8888/index,点击enter,返回res值

2、post接口,以注册接口为例,代码示例:

def my_db(sql):
   import pymysql
   coon = pymysql.connect(
      host=‘数据库ip‘, user=‘jxz‘, passwd=‘123456‘,
      port=3306, db=‘jxz‘, charset=‘utf8‘)
   cur = coon.cursor() #建立游标
   cur.execute(sql)#执行sql
   if sql.strip()[:6].upper()==‘SELECT‘:
      res =  cur.fetchall()
   else:
      coon.commit()
      res = ‘ok‘
   cur.close()
   coon.close()
   return res

import flask,json
#__name__,代表当前这个Python文件

server=flask.Flask(__name__)#把当前这个python文件当做一个服务
@server.route(‘/reg‘,methods=[‘post‘])
def reg():
    username=flask.request.values.get(‘username‘)#用来存储输入的用户名
    pwd=flask.request.values.get(‘passwd‘)#用来存储输入的密码
    if username and pwd:
        sql=‘select * from my_user where username="%s";‘%username
        if my_db(sql):
            res={‘msg‘:‘用户已存在‘,‘msg_code‘:2001}
        else:
            #insert_sql=‘insert into my_user(username,passwd,is_admin) values("%s","%s",0);‘%(username,pwd)
            insert_sql = ‘insert into my_user (username,passwd,is_admin) values ("%s","%s",0);‘ % (username, pwd)
            my_db(insert_sql)
            res={‘msg‘:‘注册成功‘,‘msg_code‘:0}
    else:
        res={‘msg‘:‘必填字段未天,请查看接口文档!‘,‘msg_code‘:1001}
        # 1001必填字段未填
    return json.dumps(res,ensure_ascii=False)
server.run(port=8989,debug=True)#debug=True,改了代码后,不用手动重启,会自动重启
#server.run(port=8888,debug=True,host=‘0.0.0.0‘)#局域网别人用你的ip就可以访问你的接口

用postman测试接口

另外:如果电脑里面装了多个版本的python,用pip安装模块

python3 -m pip instatll xlutils

python2 -m pip instatll xlutils

可以不用改python.exe文件名,但是要在对应目录下执行命令

c:\Miniconda3>python -m pip install xlrd

原文地址:https://www.cnblogs.com/zhouly-008/p/9026877.html

时间: 2024-10-07 00:23:48

python编程:excel文件操作,redis数据库,接口开发的相关文章

Python解析excel文件并存入sqlite数据库

功能:1.数据库设计 建立数据库2.Python解析excel文件3.Python读取文件名并解析4.将解析的数据存储入库 一 建立数据库 根据需求建立数据库,建立了两个表,并保证了可以将数据存储到已有的数据库中,代码如下: import sqlite3 def createDataBase(): cn = sqlite3.connect('check.db') cn.execute('''CREATE TABLE IF NOT EXISTS TB_CHECK (ID integer PRIMA

Python学习之使用Python操作Redis数据库

最近在写一个检查一台服务器上所有游戏区服配置文件中redis某个key值大小的脚本,本打算使用shell+awk+sed的方式去解决这个问题,但是由于redis的配置信息是php数组形式.shell脚本一时没有写出来,就请教他人帮忙写了个python脚本,但是自己python不是很精通,于是按照脚本中涉及到的python知识现学现用,然后根据自己的需求更改脚本.这里分享一下如何使用python操作redis数据库. Redis的Python驱动源码下载地址是https://github.com/

python(13)---发邮件、写日志、操作redis数据库

一.写邮件 import yagmail user = '[email protected]' password = 'rtcxbuejmqrdgjcd' #不是qq密码,是邮件授权码 在qq邮箱,设置--账户--开启POP3/SMTP服务,获得授权码 m=yagmail.SMTP(host='smtp.qq.com',user=user,password=password) #host-- 163邮箱用 tp.163.com m.send(to=['[email protected]','xx

C++操作Redis数据库

今天,Mayuyu来学习如何用C++来操作redis数据库.通过hiredis.h接口来实现,目前只能在Linux环境使用. hiredis.h的下载地址为:https://github.com/redis/hiredis 主要包括如下四个方法 1. redisContext* redisConnect(const char *ip, int port) 该函数用来连接redis数据库, 两个参数分别是redis数据库的ip和端口,端口号一般为6379.类似 的还提供了一个函数,供连接超时限定,

用Python读写Excel文件 Contents

用Python读写Excel文件 四种python处理excel模块PK 我主要尝试了四种工具,在此并不会给出他们的排名,因为在不同的应用场景下,做出的选择会不同.   XlsxWriter xlrd&xlwt OpenPyXL Microsoft Excel API 介绍 可以创建Excel 2007或更高版本的XLSX文件 即python-excel,含xlrd.xlwt和xlutils三大模块,分别提供读.写和其他功能 可以读写Excel 2007 XLSX和XLSM文件 直接通过COM组

Anaconda 安装redis-py模块操作redis数据库

今天遇到了一个很神奇的事情 ,在使用python操作redis 数据库的时候 ,如果使用  pip install redis    安装的是python 连接 redis的模块,  但是如果是在anaconda  里面使用  conda install -c anaconda redis  安装的是  redis数据库, 这个问题折腾了一下午,最终还是搞明白的,其实在使用 conda 要安装的是  redis-py   这个文件才对,但是至于pip安装与conda安装为什么是不同的文件我也不清

Python学习之--文件操作

Python中对文件操作可以用内置的open()函数 读文件 f=open('/home/test/test.txt','r') # 读模式打开文件 f.read() # 读取文件内容 除了正常的读取文件内容,一个常用的操作是判断文件内容是否为空,如下: if len(f.read())==0: # 如果文件内容为空 xxxx 判断一个文件或者路径是否存在,如下(这里需要在代码中导入os module: import os): file='/home/test/test.txt' dir='/h

将excel文件导入到数据库

参考:http://blog.csdn.net/jayxujia123/article/details/13684313 参考:http://kevin850115.iteye.com/blog/578142 MySQL官网:http://dev.mysql.com/doc/refman/5.7/en/load-data.html 学弟有个面试题,在群里问了下如何将excel文件导入到数据库.以前也没试过,正好在学习MySQL,练练手吧. 首先,将excel文件另存为用逗号分隔的csv文件,传到

java操作redis数据库实例(redis集群)

1.配置redis集群 <?xml version="1.0" encoding="UTF-8"?> <redisCluster> <!--userRoute --> <clusterGroup name="userRoute" selectdb="1"> <server host="10.177.129.16" port="6379"