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制作简单的朴素基数估计器的教程
Apr 01 Python
如何高效使用Python字典的方法详解
Aug 31 Python
Django REST为文件属性输出完整URL的方法
Dec 18 Python
Django 使用Ajax进行前后台交互的示例讲解
May 28 Python
Python操作Excel插入删除行的方法
Dec 10 Python
解决pyinstaller打包pyqt5的问题
Jan 08 Python
Python3.5实现的三级菜单功能示例
Mar 25 Python
Flask教程之重定向与错误处理实例分析
Aug 01 Python
python中Lambda表达式详解
Nov 20 Python
python 变量初始化空列表的例子
Nov 28 Python
django ORM之values和annotate使用详解
May 19 Python
Python面向对象特殊属性及方法解析
Sep 16 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预定义变量使用帮助(带实例)
2013/10/30 PHP
php中ltrim()、rtrim()与trim()删除字符空格实例
2014/11/25 PHP
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
2015/04/13 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
jquery attr()设置和获取属性值实例教程
2016/09/25 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
Vue如何引入远程JS文件
2017/04/20 Javascript
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
2017/05/02 Javascript
Angular4 中常用的指令入门总结
2017/06/12 Javascript
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
微信小程序progress组件使用详解
2018/01/31 Javascript
详解Vue SPA项目优化小记
2018/07/03 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
JS定义函数的几种常用方法小结
2019/05/23 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
js实现石头剪刀布游戏
2020/10/11 Javascript
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
举例讲解Python的Tornado框架实现数据可视化的教程
2015/05/02 Python
python 队列详解及实例代码
2016/10/18 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
Python使用post及get方式提交数据的实例
2019/01/24 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
extern是什么意思
2016/03/10 面试题
2013年大学生的自我鉴定
2013/10/24 职场文书
英文版销售经理个人求职信
2013/11/20 职场文书
二年级数学教学反思
2014/01/21 职场文书
上班离岗检讨书
2014/01/27 职场文书
李白故里导游词
2015/02/12 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
使用这 6个Vue加载动画库来减少我们网站的跳出率
2021/05/18 Vue.js
用Python编写简单的gRPC服务的详细过程
2021/07/04 Python
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python