Python通过调用mysql存储过程实现更新数据功能示例


Posted in Python onApril 03, 2018

本文实例讲述了Python通过调用mysql存储过程实现更新数据功能。分享给大家供大家参考,具体如下:

一、需求分析

由于管理费率配置错误,生成订单的还本付息表和订单表的各种金额,管理费之间的计算都有错误,需要进行数据订正。为此,为了造个轮子,以后省很多功夫,全部用程序去修正,不接入人工。

二、带参数mysql 存储过程创建

1、更新订单付息表(t_order_rapay)

drop procedure if exists update_t_order_rapay;
delimiter $$
create procedure update_t_order_rapay(IN orderNo varchar(64))
begin
  declare t_order_no varchar(64);
  set t_order_no=orderNo;
  UPDATE t_order_repay
  SET total_amount=principal+interest+round(manage_amount*0.0808/0.052,3)+breach_amount,
    left_amount=principal+interest+round(manage_amount*0.0808/0.052,3)+breach_amount,
  left_repay_manager=round(manage_amount*0.0808/0.052,3),
  manage_amount=round(manage_amount*0.0808/0.052,3)
  WHERE order_no=t_order_no;
end $$
delimiter;

2、更新订单表(t_order_info)

drop procedure if exists update_t_order_info;
delimiter $$
create procedure update_t_order_info(IN orderNo varchar(64))
begin
  declare t_order_no varchar(64);
  set t_order_no=orderNo;
  SELECT left_amount into @m1 from t_order_repay WHERE order_no=t_order_no ORDER BY plan_time LIMIT 1;
  UPDATE t_order_info
  set manage_cost_rate=0.0808,
  manage_cost=round(manage_cost*0.0808/0.052,3),
  left_amount=borrow_amount+interest_amount+manage_cost,
  next_amount_need=@m1
  WHERE order_no=t_order_no;
end $$
delimiter;

3、python 调用mysql 中的存储过程

# encoding: utf-8
import time
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
time1 = time.time()
import pandas as pd
import pymysql
############################################从数据库读数据###########################################
###########线上######################
# 加上字符集参数,防止中文乱码
# conn=pymysql.connect(
#  host="##########",
#  database="######",
#  user="####",
#  password="##########",
#  port=#######,
#  charset='utf8'
# )
# #############测试库######################
# ## 加上字符集参数,防止中文乱码
# conn=pymysql.connect(
#  host="172.16.34.32",
#  database="#########",
#  user="admin",
#  password="##############",
#  port=#########,
#  charset='utf8'
# )
#sql语句(安徽)
# sqlcmd="""
# SELECT order_no from t_order_info WHERE offline_org_no in(
# 0032,0035,0036
#
#
# ) and substr(create_time,1,10)>="2017-10-31"
#
# and `status` in(105,106,107,108)
#
# and manage_cost_rate=0.052
#
#
# """
#################sql语句(江苏)
# sqlcmd2="""
# SELECT order_no from t_order_info WHERE offline_org_no in(
# 0002,0005,0006,0007,0008,0009,0010,0011,0012,0013,0014,0017,0018,0019,0025,0026,0027,0028,0030,0031,0033,0034
# ) and substr(create_time,1,10)>="2017-10-31"
# and `status` in(105,106,107,108)
# and manage_cost_rate=0.052
#
# """
#利用pandas 模块导入mysql数据
# data=pd.read_sql(sqlcmd2,conn)
# print data
#
#
# ###################更新order_rapay表
# for each in data["order_no"]:
#   print each
#   # 创建游标
#   cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
#   #有参数存储过程
#   cursor.execute('call update_t_order_rapay(%s)',(each))
#   conn.commit()
#
# print "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
# #####################更新order_info表###################
# for each in data["order_no"]:
#   print each
#
#   # 创建游标
#   cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
#   #有参数存储过程
#   cursor.execute('call update_t_order_info(%s)', (each))
#   conn.commit()
#
#
# cursor.close()
# print '调用存储过程完毕................'
# conn.close()
# time2=time.time()
# print u'总共耗时:' + str(time2 - time1) + 's'

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python解析中国天气网的天气数据
Mar 21 Python
Centos5.x下升级python到python2.7版本教程
Feb 14 Python
Sanic框架蓝图用法实例分析
Jul 17 Python
Sanic框架应用部署方法详解
Jul 18 Python
python 产生token及token验证的方法
Dec 26 Python
pandas中DataFrame修改index、columns名的方法示例
Aug 02 Python
python实现全排列代码(回溯、深度优先搜索)
Feb 26 Python
python 链接sqlserver 写接口实例
Mar 11 Python
python实现凯撒密码、凯撒加解密算法
Jun 11 Python
python操作微信自动发消息的实现(微信聊天机器人)
Jul 14 Python
Python中猜拳游戏与猜筛子游戏的实现方法
Sep 04 Python
用Python编写简单的gRPC服务的详细过程
Jul 04 Python
python批量读取txt文件为DataFrame的方法
Apr 03 #Python
python逐行读写txt文件的实例讲解
Apr 03 #Python
Python实现的计算马氏距离算法示例
Apr 03 #Python
python2.7无法使用pip的解决方法(安装easy_install)
Apr 03 #Python
快速解决安装python没有scripts文件夹的问题
Apr 03 #Python
Python中将变量按行写入txt文本中的方法
Apr 03 #Python
python使用tensorflow深度学习识别验证码
Apr 03 #Python
You might like
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
js中typeof的用法汇总
2013/12/12 Javascript
jquery实现表格隔行换色效果
2015/11/19 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
2015/11/25 Javascript
bootstrap flask登录页面编写实例
2016/11/01 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
2019/10/11 Javascript
JS Array.from()将伪数组转换成数组的方法示例
2020/03/23 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
使用webpack5从0到1搭建一个react项目的实现步骤
2020/12/16 Javascript
[01:29:46]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第二局
2016/02/27 DOTA
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
python实现飞机大战
2018/09/11 Python
python实现彩色图转换成灰度图
2019/01/15 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
python tkinter实现屏保程序
2019/07/30 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
Python获取excel内容及相关操作代码实例
2020/08/10 Python
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
一些Solaris面试题
2015/12/22 面试题
应届生体育教师自荐信
2013/10/03 职场文书
工程管理英文求职信
2014/03/18 职场文书
关于读书的演讲稿400字
2014/08/27 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
2014年物业管理工作总结
2014/11/21 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
获奖感言怎么写
2015/07/31 职场文书
Python实现生活常识解答机器人
2021/06/28 Python
Python实现对齐打印 format函数的用法
2022/04/28 Python