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异常处理总结
Aug 15 Python
python搭建微信公众平台
Feb 09 Python
json跨域调用python的方法详解
Jan 11 Python
基于并发服务器几种实现方法(总结)
Dec 29 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
Jan 30 Python
Python使用pyserial进行串口通信的实例
Jul 02 Python
python将类似json的数据存储到MySQL中的实例
Jul 12 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
Django 再谈一谈json序列化
Mar 16 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
Aug 11 Python
python跨文件使用全局变量的实现
Nov 17 Python
Python批量将csv文件转化成xml文件的实例
May 10 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
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
php实现转换ubb代码的方法
2015/06/18 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
js冒泡法和数组转换成字符串示例代码
2013/08/14 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
jquery预加载图片的方法
2015/05/27 Javascript
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
jQuery实现6位数字密码输入框
2016/12/29 Javascript
简单实现jQuery弹窗效果
2017/10/30 jQuery
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
vue使用codemirror的两种用法
2019/08/27 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python基础之入门必看操作
2017/07/26 Python
Python之自动获取公网IP的实例讲解
2017/10/01 Python
python 重命名轴索引的方法
2018/11/10 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
南京某软件公司的.net面试题
2015/11/30 面试题
会计专业求职信范文
2014/03/16 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
一年级班主任工作总结2014
2014/11/08 职场文书
护士实习自荐信
2015/03/06 职场文书
科级干部培训心得体会
2016/01/06 职场文书
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android
mybatis-plus模糊查询指定字段
2022/04/28 Java/Android