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 09 Python
探究Python中isalnum()方法的使用
May 18 Python
Python打造出适合自己的定制化Eclipse IDE
Mar 02 Python
利用Python抓取行政区划码的方法
Nov 28 Python
python logging日志模块的详解
Oct 29 Python
python利用Tesseract识别验证码的方法示例
Jan 21 Python
Python发展简史 Python来历
May 14 Python
基于python 将列表作为参数传入函数时的测试与理解
Jun 05 Python
Numpy中np.max的用法及np.maximum区别
Nov 27 Python
django使用多个数据库的方法实例
Mar 04 Python
python实现简单反弹球游戏
Apr 12 Python
python3 字符串str和bytes相互转换
Mar 23 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安全配置
2006/12/06 PHP
PHP Smarty生成EXCEL文档的代码
2008/08/23 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
2012/01/03 PHP
PHP_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
详解JavaScript函数绑定
2013/08/18 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
用JS实现图片轮播效果代码(一)
2016/06/26 Javascript
JS 动态判断PC和手机浏览器实现代码
2016/09/21 Javascript
jQuery页面弹出框实现文件上传
2017/02/09 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
vue实现引入本地json的方法分析
2018/07/12 Javascript
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
python实现用于测试网站访问速率的方法
2015/05/26 Python
Python实现在线音乐播放器
2017/03/03 Python
基于pandas将类别属性转化为数值属性的方法
2018/07/25 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
python zip()函数的使用示例
2020/09/23 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
Lululemon英国官网:加拿大瑜伽服装品牌
2019/01/14 全球购物
ManoMano英国:欧洲第一家专注于DIY和园艺市场的电商平台
2020/03/12 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
医院办公室主任职责
2013/12/29 职场文书
逃课检讨书怎么写
2015/01/01 职场文书
2016年企业先进员工事迹材料
2016/02/25 职场文书
写好求职信的技巧解密
2019/05/14 职场文书
演讲稿之开卷有益
2019/08/07 职场文书