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高效编程技巧
Jan 07 Python
使用Python导出Excel图表以及导出为图片的方法
Nov 07 Python
python中lambda()的用法
Nov 16 Python
python实现flappy bird小游戏
Dec 24 Python
python利用跳板机ssh远程连接redis的方法
Feb 19 Python
python异步存储数据详解
Mar 19 Python
Django框架序列化与反序列化操作详解
Nov 01 Python
python3读取csv文件任意行列代码实例
Jan 13 Python
基于python实现可视化生成二维码工具
Jul 08 Python
linux mint中搜狗输入法导致pycharm卡死的问题
Oct 28 Python
python中reload重载实例用法
Dec 15 Python
python实现web邮箱扫描的示例(附源码)
Mar 30 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/10/09 PHP
php中出现空白页的原因及解决方法汇总
2014/07/08 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
2015/11/11 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
浅析js中的浮点型运算问题
2014/01/06 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
textarea不能通过maxlength属性来限制字数的解决方法
2014/09/01 Javascript
node.js插件nodeclipse安装图文教程
2020/10/19 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
angular2中Http请求原理与用法详解
2018/01/11 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
vue后台管理之动态加载路由的方法
2018/08/13 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
2019/05/08 Javascript
js中arguments对象的深入理解
2019/05/14 Javascript
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
js回调函数仿360开机
2019/12/26 Javascript
[01:46]2020完美世界全国高校联赛秋季赛报名开启
2020/10/15 DOTA
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
Python缩进和冒号详解
2016/06/01 Python
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
python getopt详解及简单实例
2016/12/30 Python
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
一个Python最简单的接口自动化框架
2018/01/02 Python
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
python和c语言的主要区别总结
2019/07/07 Python
python调用接口的4种方式代码实例
2019/11/19 Python
python3.8下载及安装步骤详解
2020/01/15 Python
蛋糕店的商业计划书范文
2014/01/27 职场文书
作风转变心得体会
2014/09/02 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书