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的id()函数介绍
Feb 10 Python
Python中针对函数处理的特殊方法
Mar 06 Python
Python利用多进程将大量数据放入有限内存的教程
Apr 01 Python
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
Apr 09 Python
python 中random模块的常用方法总结
Jul 08 Python
在python win系统下 打开TXT文件的实例
Apr 29 Python
基于python中theano库的线性回归
Aug 31 Python
django DRF图片路径问题的解决方法
Sep 10 Python
pytorch中的自定义反向传播,求导实例
Jan 06 Python
如何在Python3中使用telnetlib模块连接网络设备
Sep 21 Python
Django一小时写出账号密码管理系统
Apr 29 Python
Python安装使用Scrapy框架
Apr 12 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
两种设置php载入页面时编码的方法
2014/07/29 PHP
迁移PHP版本到PHP7
2015/02/06 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
PHP数组内存利用率低和弱类型详细解读
2017/08/10 PHP
PHP使用mongoclient简单操作mongodb数据库示例
2019/02/08 PHP
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
js 颜色选择器(兼容firefox)
2009/03/05 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
基于javascript实现图片懒加载
2016/01/05 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
同步异步动态引入js文件的几种方法总结
2016/09/23 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
2019/09/02 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
[01:57]2016完美“圣”典风云人物:国士无双专访
2016/12/04 DOTA
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
[48:31]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第一场 2月2日
2021/03/11 DOTA
python使用turtle库绘制时钟
2020/03/25 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
HTML的form表单和django的form表单
2019/07/25 Python
django多种支付、并发订单处理实例代码
2019/12/13 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
橄榄树药房:OLIVEDA
2019/09/01 全球购物
小学教师自我鉴定
2013/11/07 职场文书
优秀毕业生事迹材料
2014/02/12 职场文书
表彰会主持词
2014/03/26 职场文书
教师对学生的评语
2014/04/28 职场文书
党员教师群众路线对照检查材料思想汇报
2014/09/29 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript
如何vue使用el-table遍历循环表头和表体数据
2022/04/26 Vue.js