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模拟新浪微博登陆功能(新浪微博爬虫)
Dec 24 Python
Python的高级Git库 Gittle
Sep 22 Python
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
Nov 18 Python
Python常见异常分类与处理方法
Jun 04 Python
Django权限机制实现代码详解
Feb 05 Python
django settings.py 配置文件及介绍
Jul 15 Python
python 爬虫 实现增量去重和定时爬取实例
Feb 28 Python
Python中常见的数制转换有哪些
May 27 Python
哪些是python中web开发框架
Jun 17 Python
详解KMP算法以及python如何实现
Sep 18 Python
python实现银行账户系统
Feb 22 Python
详细总结Python常见的安全问题
May 21 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
晶体管来复再生式二管收音机
2021/03/02 无线电
PHP XML操作的各种方法解析(比较详细)
2010/06/17 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
2015/05/12 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
2016/04/12 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
2019/03/07 PHP
TP5.0框架实现无限极回复功能的方法分析
2019/05/04 PHP
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
Jquery 点击按钮自动高亮实现原理及代码
2014/04/25 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
非常漂亮的相册集 使用jquery制作相册集
2016/04/28 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
JavaScript基于对象方法实现数组去重及排序操作示例
2018/07/10 Javascript
vue+axios+element ui 实现全局loading加载示例
2018/09/11 Javascript
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
一次微信小程序内地图的使用实战记录
2019/09/09 Javascript
jQuery实现滑动开关效果
2020/08/02 jQuery
vue打开子组件弹窗都刷新功能的实现
2020/09/21 Javascript
详解django三种文件下载方式
2018/04/06 Python
Python实现简单http服务器
2018/04/12 Python
python3编写ThinkPHP命令执行Getshell的方法
2019/02/26 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
解决python flask中config配置管理的问题
2019/07/26 Python
Pytorch的mean和std调查实例
2020/01/02 Python
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
网络维护管理员的自我评价分享
2013/11/11 职场文书
总经理助理工作职责
2014/02/06 职场文书
厂长岗位职责
2014/02/19 职场文书
公司会计主管岗位责任制
2014/03/01 职场文书
2014爱耳日宣传教育活动总结
2014/03/09 职场文书
丧事答谢词
2015/01/05 职场文书
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL
python基于turtle绘制几何图形
2021/06/15 Python
MySQL系列之三 基础篇
2021/07/02 MySQL
Win7/8.1用户可以免费升级到Windows 11系统吗?
2021/11/21 数码科技