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 相关文章推荐
wxPython窗口的继承机制实例分析
Sep 28 Python
深入理解python对json的操作总结
Jan 05 Python
pycharm安装和首次使用教程
Aug 27 Python
windows下 兼容Python2和Python3的解决方法
Dec 05 Python
对python中xlsx,csv以及json文件的相互转化方法详解
Dec 25 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
Jun 12 Python
Python openpyxl读取单元格字体颜色过程解析
Sep 03 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
基于python实现模拟数据结构模型
Jun 12 Python
Python3基于print打印带颜色字符串
Jul 06 Python
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Apr 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
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
php实现对两个数组进行减法操作的方法
2015/04/17 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
PHP+mysql实现的三级联动菜单功能示例
2019/02/15 PHP
JavaScript 高级语法介绍
2009/06/15 Javascript
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
IE下JS读取xml文件示例代码
2013/08/05 Javascript
JSONP获取Twitter和Facebook文章数的具体步骤
2014/02/24 Javascript
SuperSlide标签切换、焦点图多种组合插件
2015/03/14 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
浅谈js 闭包引起的内存泄露问题
2015/06/22 Javascript
jQuery实现自动与手动切换的滚动新闻特效代码分享
2015/08/27 Javascript
JavaScript判断表单为空及获取焦点的方法
2016/02/12 Javascript
Angular中$cacheFactory的作用和用法实例详解
2016/08/19 Javascript
form+iframe解决跨域上传文件的方法
2016/11/18 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
js for循环倒序输出数组元素的实例
2017/03/01 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
2018/01/18 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
Vue-CLI 项目在pycharm中配置方法
2019/08/30 Javascript
[04:59]DOTA2-DPC中国联赛 正赛 Ehome vs iG 选手采访
2021/03/11 DOTA
python3爬取淘宝信息代码分析
2018/02/10 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
python random从集合中随机选择元素的方法
2019/01/23 Python
Python使用正则表达式分割字符串的实现方法
2019/07/16 Python
python 制作网站小说下载器
2021/02/20 Python
美国购买隐形眼镜网站:Lenses For Less
2020/07/05 全球购物
中学生学雷锋演讲稿
2014/04/26 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
用python开发一款操作MySQL的小工具
2021/05/12 Python