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创建线程示例
May 06 Python
仅用50行代码实现一个Python编写的计算器的教程
Apr 17 Python
python处理图片之PIL模块简单使用方法
May 11 Python
Python多进程同步简单实现代码
Apr 27 Python
Python编写登陆接口的方法
Jul 10 Python
Python设计模式之观察者模式简单示例
Jan 10 Python
python爬虫的数据库连接问题【推荐】
Jun 25 Python
python获取url的返回信息方法
Dec 17 Python
在Pycharm中将pyinstaller加入External Tools的方法
Jan 16 Python
Python爬取爱奇艺电影信息代码实例
Nov 26 Python
Python API len函数操作过程解析
Mar 05 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
May 17 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类与对象中的private访问控制的疑问
2012/11/01 PHP
PHP代码保护--Zend Guard的使用详解
2013/06/03 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
PHP实现多图片上传类实例
2014/07/26 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
2013/01/11 Javascript
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
jQuery在页面加载时动态修改图片尺寸的方法
2015/03/20 Javascript
浅析location.href跨窗口调用函数
2016/11/22 Javascript
Node.js常用工具之util模块
2017/03/09 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
vue loadmore组件上拉加载更多功能示例代码
2017/07/19 Javascript
vue实现图书管理demo详解
2017/10/17 Javascript
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
2018/09/01 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
vue实现axios图片上传功能
2019/08/20 Javascript
Vue.set 全局操作简单示例
2019/09/19 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
python入门教程之识别验证码
2017/03/04 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
Python编写打字训练小程序
2019/09/26 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
2020/02/12 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
Ajax和javascript的区别
2013/07/20 面试题
求职者简历中的自我评价
2013/10/20 职场文书
你懂得怎么写自荐信吗?
2013/12/27 职场文书
环保倡议书100字
2014/05/15 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
2014年接待工作总结
2014/11/26 职场文书
新教师教学工作总结
2015/08/12 职场文书
丧事答谢词大全
2015/09/30 职场文书