环境准备

安装flask

pip install  flask

项目结构如图

1.新建配置文件conf.py


#!/usr/bin/python
# -*- coding:utf-8 -*- import pymysql,os # ============================ Global parameter ==============================
proDir = os.path.split(os.path.realpath(__file__))[0]
print(proDir)
xlsPath = os.path.join(proDir, 'testFile')
#============================ DB Config ============================== config = {
    'host': '127.0.0.1',
'port': 3306,
'user': 'root',
'passwd': 'pwd',
'charset': 'utf8mb4',
'cursorclass': pymysql.cursors.DictCursor
}
 

2.新建目录testFile,将excel表格放到此目录下

3.原始数据处理,excel表数据导入mysql库

新建readexcel.py,读取excel数据,返回格式为[(1,2,3),(3,4,5)]

import xlrd
from conf import xlsPath
class ExcelUtil():
'''
返回格式为[(1,2,3),(3,4,5)]
'''
def __init__(self, excelPath, sheetIndex=0):
self.data = xlrd.open_workbook(excelPath)
self.table = self.data.sheet_by_index(sheetIndex)
# 获取第一行作为key值
self.keys = self.table.row_values(0)
# 获取总行数
self.rowNum = self.table.nrows
# 获取总列数
self.colNum = self.table.ncols def dict_data(self):
r = []
j = 1
for i in list(range(self.rowNum-1)):
values = self.table.row_values(j)
r.append(tuple(values))
j += 1
return r if __name__ == "__main__":
filepath = xlsPath+'/testsalary.xlsx'
sheetIndex = 0
data = ExcelUtil(filepath, sheetIndex).dict_data()
print(data)
 

4.操作数据库connDB.py,将excel数据批量入库


#!/usr/bin/python
# -*- coding:utf-8 -*- import pymysql
from conf import config
from common.readexcel import ExcelUtil, xlsPath filepath = xlsPath + '/testsalary.xlsx'
sheetIndex = 0
data = ExcelUtil(filepath, sheetIndex).dict_data() def conn_db():
conn = pymysql.connect(**config)
conn.autocommit(1)
cursor = conn.cursor() try:
# 创建数据库
DB_NAME = 'test'
cursor.execute('DROP DATABASE IF EXISTS %s' % DB_NAME)
cursor.execute('CREATE DATABASE IF NOT EXISTS %s ' % DB_NAME)
conn.select_db(DB_NAME) # 创建表
TABLE_NAME = 'user'
cursor.execute(
'CREATE TABLE %s(company varchar(30),Account varchar(30) primary key,'
'name varchar(30), Duties varchar(30), Jobwages varchar(30),'
'Rankwages varchar(30),'
'workyears varchar(30),70percent varchar(30),'
'30percent varchar(30),'
'totoal_wages varchar(30),housing_fund varchar(30),'
'Medical_insurance varchar(30),Pension varchar(30),'
'Career_Annuities varchar(30),Taxes varchar(30),'
'total_Deduction varchar(30),Actual_wages varchar(30))' % TABLE_NAME) # 批量插入纪录
values = []
for i in data:
values.append(i)
cursor.executemany('INSERT INTO user VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)', values)
# 查询数据条
cursor.execute('SELECT * FROM %s' % TABLE_NAME)
print('total records:', cursor.rowcount)
result = cursor.fetchall()
return result except:
import traceback
traceback.print_exc()
# 发生错误时会滚
conn.rollback()
finally:
# 关闭游标连接
cursor.close()
# 关闭数据库连接
conn.close() if __name__ == "__main__":
print(conn_db())
 

5.数据准备好,开始写接口,新建api.py


from flask import Flask, request
import json
import pymysql
from conf import config app = Flask(__name__) # 只接受get方法访问
@app.route("/select/salary/", methods=["GET"])
def check():
# 默认返回内容
return_dict = {'code': '200', 'msg': '处理成功', 'result': False}
# 判断入参是否为空
if request.args is None:
return_dict['return_code'] = '504'
return_dict['return_info'] = '请求参数为空'
return json.dumps(return_dict, ensure_ascii=False)
# 获取传入的参数
get_data = request.args.to_dict()
Account = get_data.get('Account')
# age = get_data.get('age')
# 对参数进行操作
return_dict['result'] = sql_result(Account) return json.dumps(return_dict, ensure_ascii=False) # 功能函数
def sql_result(Account):
conn = pymysql.connect(**config)
conn.autocommit(1)
conn.select_db('test')
cursor = conn.cursor()
cursor.execute('SELECT * FROM test.user WHERE Account= %s' % Account)
# print('total records:', cursor.rowcount)
result = cursor.fetchall()
conn.close()
return result[0] if __name__ == "__main__":
app.run(host='127.0.0.1',port=5000)
 

6.浏览器访问

http://127.0.0.1:5000/select/salary/?Account=62268200113006149

查询接口---flask+python+mysql的更多相关文章

  1. 使用Flask开发简单接口(3)--引入MySQL

    前言 前面的两篇文章中,我们已经学习了通过Flask开发GET和POST请求接口,但一直没有实现操作数据库,那么我们今天的目的,就是学习如何将MySQL数据库运用到当前的接口项目中. 本人环境:Pyt ...

  2. python爬取免费优质IP归属地查询接口

    python爬取免费优质IP归属地查询接口 具体不表,我今天要做的工作就是: 需要将数据库中大量ip查询出起归属地 刚开始感觉好简单啊,毕竟只需要从百度找个免费接口然后来个python脚本跑一晚上就o ...

  3. Python + MySQL 批量查询百度收录

    做SEO的同学,经常会遇到几百或几千个站点,然后对于收录情况去做分析的情况 那么多余常用的一些工具在面对几千个站点需要去做收录分析的时候,那么就显得不是很合适. 在此特意分享给大家一个批量查询百度收录 ...

  4. python mysql 简单总结(MySQLdb模块 需另外下载)

    python 通过DB-API规范了它所支持的不同的数据库,使得不同的数据库可以使用统一的接口来访问和操作. 满足DB-API规范的的模块必须提供以下属性: 属性名 描述 apilevel DB-AP ...

  5. Python MySQL(MySQLdb)

    From: http://www.yiibai.com/python/python_mysql.html Python标准的数据库接口的Python DB-API(包括Python操作MySQL).大 ...

  6. 10分钟教你Python+MySQL数据库操作

    欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! 本文介绍如何利用python来对MySQL数据库进行操作,本文将主要从以下几个方面展开介绍: 1.数据库介绍 2.MySQL数据库安装和设置 ...

  7. 三、Django学习之单表查询接口

    查询接口 all() 查询所有结果,结果是queryset类型 filter(**kwargs) and条件关系:参数用逗号分割表示and关系 models.Student.objects.filte ...

  8. Python MySQL ORM QuickORM hacking

    # coding: utf-8 # # Python MySQL ORM QuickORM hacking # 说明: # 以前仅仅是知道有ORM的存在,但是对ORM这个东西内部工作原理不是很清楚, ...

  9. python 之路,Day11(上) - python mysql and ORM

    python 之路,Day11 - python mysql and ORM   本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 创建数据库 ...

随机推荐

  1. portal项目启动问题

    错误信息: Disconnected from the target VM, address: '127.0.0.1:58909', transport: 'socket' Process finis ...

  2. 推荐一款手机清理工具App悟空清理

    推荐一款手机清理工具App悟空清理 1 介绍 悟空清理是一款完全免费的手机加速与存储空间清理工具软件,强力去除顽固垃圾,使手机运行更畅快. 2 特色功能介绍 悟空在手,清理无忧!悟空清理,人人都在用的 ...

  3. Loj #3124. 「CTS2019 | CTSC2019」氪金手游

    Loj #3124. 「CTS2019 | CTSC2019」氪金手游 题目描述 小刘同学是一个喜欢氪金手游的男孩子. 他最近迷上了一个新游戏,游戏的内容就是不断地抽卡.现在已知: - 卡池里总共有 ...

  4. Shell~echo -e 颜色输出

    echo -e 可以控制字体颜色和背景颜色输出 从一个例子开始: # echo -e "\e[1;33;41m test content \e[0m" 输出效果: . \e 转义起 ...

  5. SpringBoot之RESTful风格

    SpringBoot之RESTful风格 1.RESTful介绍 RESTful是一种软件架构风格,一种时尚! RESTful架构风格规定,数据的元操作,即CRUD(create, read, upd ...

  6. linux中断子系统

    参考引用:http://www.wowotech.net/sort/irq_subsystem wowotech:一个很好的linux技术博客. 一.概述 目的 kernel管理硬件设备的方式:轮询. ...

  7. Kafka学习笔记2--Kafka的服务端配置

    下载解压 kafka 后,在 kafka/config 下有 3 个配置文件与主题的生产.消费相关. server.properties--服务端配置 producer.properties--生产端 ...

  8. WPF 高级篇 MVVM (MVVMlight) 依赖注入使用Messagebox

    原文:WPF 高级篇 MVVM (MVVMlight) 依赖注入使用Messagebox MVVMlight 实现依赖注入 把弹框功能 和接口功能注入到各个插件中 使用依赖注入 先把所有的ViewMo ...

  9. Linux 监控之 IO

    简单介绍下 Linux 中与 IO 相关的内容. 简介 可以通过如下命令查看与 IO 相关的系统信息. # tune2fs -l /dev/sda7 ← 读取superblock信息 # blockd ...

  10. 代码语法高亮踩坑-原理,问题, PRE元素及htmlentity

    语法高亮库基础原理 在研究使用能够在web页面上代码语法高显的解决方案时,发现有很多现成的开源库.比较中意的有prism.js,highlightjs.他们的原理基本上核心就两点: 1. 利用html ...