文档章节

查询接口---flask+python+mysql

o
 osc_wws45aot
发布于 2019/08/20 10:48
字数 606
阅读 23
收藏 0

精选30+云产品,助力企业轻松上云!>>>

环境准备

安装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

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Spring Data Jpa:分页、Specification、Criteria

分页的主要接口与类 PagingAndSortingRepository 继承自 CrudRepository 接口,提供了排序以及分页查询能力,提供了两个方法 虽然 PagingAndSortingRepository 接口中只有 findAll 方法,但是...

osc_3rgq3dae
2019/08/20
4
0
ArcGIS Engine开发之空间查询

ArcGIS Engine开发之空间查询 2 { 3 //变量定义 4 private IMap currentMap;//当前MapControl控件的Map对象 5 private IFeatureLayer currentFeatureLayer;//设置临时类变量来使用IFeatureL......

BeautyJingJing
03/31
0
0
基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(二)

系列文章 使用 abp cli 搭建项目 给项目瘦身,让它跑起来 完善与美化,Swagger登场 数据访问和代码优先 自定义仓储之增删改查 统一规范API,包装返回模型 再说Swagger,分组、描述、小绿锁 ...

dotNET跨平台
06/05
0
0
常用免费接口汇总

webservice工厂接口 http://www.36wu.com 快递查询接口http://webservice.36wu.com/ExpressService.asmx ip查询接口http://webservice.36wu.com/ipService.asmx 天气预报接口http://webservi......

赵许东
2013/12/28
95
1
Spring Data Jpa(分页、Specification、Criteria)

分页的主要接口与类 PagingAndSortingRepository 继承自 CrudRepository 接口,提供了排序以及分页查询能力,提供了两个方法 虽然 PagingAndSortingRepository 接口中只有 findAll 方法,但是...

林塬
2018/01/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

自从尝了 Rust,Java 突然不香了

Rust 是软件行业中相对而言比较新的一门编程语言,如果从语法上来比较,该语言与 C++ 其实非常类似,但从另一方面而言,Rust 能更高效地提供许多功能来保证性能和安全。而且,Rust 还能在无需...

osc_k3vwonkw
15分钟前
10
0
Java 高级 面试题 及 参考答案

一、面试题基础总结 1、 JVM结构原理、GC工作机制详解 答:具体参照:JVM结构、GC工作机制详解 ,说到GC,记住两点:1、GC是负责回收所有无任何引用对象的内存空间。 注意:垃圾回收回收的是无...

FH-Admin
16分钟前
14
0
机器学习中的AUC-ROC曲线

作者|ANIRUDDHA BHANDARI 编译|VK 来源|Analytics Vidhya AUC-ROC曲线 你已经建立了你的机器学习模型-那么接下来呢?你需要对它进行评估,并验证它有多好(或有多坏),这样你就可以决定是否...

osc_bg8v9gvf
17分钟前
8
0
音视频(消息)应用场景 :连麦交友例子

实现一个小例子: 效果类似唱吧APP里的 连麦交友功能,音视频,IM 及音视频 SDK参考融云服务商。 没有印象的可以搜索 ’连麦’ 关键字在 应用商店下载一款 连麦的软件 体验下 业务方面的需求...

T型人才追梦者
19分钟前
11
0
逛淘宝天猫想到SSO单点登录

我的原文地址:https://mp.weixin.qq.com/s/77xukPDlgkKnYpwu4LrqaA

osc_yy65eb2q
19分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部