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操作xml文件详细介绍
Jun 09 Python
盘点提高 Python 代码效率的方法
Jul 03 Python
python字符串str和字节数组相互转化方法
Mar 18 Python
用Python实现KNN分类算法
Dec 22 Python
解决Python selenium get页面很慢时的问题
Jan 30 Python
使用浏览器访问python写的服务器程序
Oct 10 Python
opencv3/C++实现视频读取、视频写入
Dec 11 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
Jan 24 Python
python求一个字符串的所有排列的实现方法
Feb 04 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
May 18 Python
基于python实现音乐播放器代码实例
Jul 01 Python
linux系统下pip升级报错的解决方法
Jan 31 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
Ha0k 0.3 PHP 网页木马修改版
2009/10/11 PHP
简单解决微信文章图片防盗链问题
2016/12/17 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
prototype 1.5相关知识及他人笔记
2006/12/16 Javascript
Code:loadScript( )加载js的功能函数
2007/02/02 Javascript
网上应用的一个不错common.js脚本
2007/08/08 Javascript
日历查询的算法 如何计算某一天是星期几
2012/12/12 Javascript
js nextSibling属性和previousSibling属性概述及使用注意
2013/02/16 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
用javascript对一个json数组深度赋值示例
2014/07/27 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
node.js中cluster的使用教程
2017/06/09 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
2017/09/22 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
vue自定义指令实现方法详解
2019/02/11 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
Python中规范定义命名空间的一些建议
2016/06/04 Python
Python实现的文本对比报告生成工具示例
2018/05/22 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
2020/02/07 Python
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
安全承诺书范文
2014/03/26 职场文书
贷款委托书范本
2014/04/08 职场文书
财务部绩效考核方案
2014/05/04 职场文书
党的群众路线教育实践活动对照检查材料(个人)
2014/09/24 职场文书
乡镇领导班子四风对照检查材料
2014/09/27 职场文书
python基础之停用词过滤详解
2021/04/21 Python
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript
在HTML中引入CSS的几种方式介绍
2021/12/06 HTML / CSS
CSS实现九宫格布局(自适应)的示例代码
2022/02/12 HTML / CSS