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实现八大排序算法(1)
Sep 14 Python
Python面向对象编程基础解析(二)
Oct 26 Python
Python Web程序部署到Ubuntu服务器上的方法
Feb 22 Python
python奇偶行分开存储实现代码
Mar 19 Python
Python之csv文件从MySQL数据库导入导出的方法
Jun 21 Python
对python list 遍历删除的正确方法详解
Jun 29 Python
Python基于scipy实现信号滤波功能
May 08 Python
Pytorch 实现sobel算子的卷积操作详解
Jan 10 Python
Python实现bilibili时间长度查询的示例代码
Jan 14 Python
python软件都是免费的吗
Jun 18 Python
新手常见Python错误及异常解决处理方案
Jun 18 Python
PyQt5结合matplotlib绘图的实现示例
Sep 15 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获取网址的顶级域名函数代码
2012/09/24 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
PHP实现添加购物车功能
2017/03/06 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
php str_replace替换指定次数的方法详解
2017/05/05 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
2020/10/30 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
微信小程序的动画效果详解
2017/01/18 Javascript
Bootstrap中data-target 到底是什么
2017/02/14 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
2017/09/11 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
使用jquery Ajax实现上传附件功能
2018/10/23 jQuery
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
用Python输出一个杨辉三角的例子
2014/06/13 Python
Python的函数的一些高阶特性
2015/04/27 Python
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
2017/07/17 Python
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
基于pytorch padding=SAME的解决方式
2020/02/18 Python
详解Python中的路径问题
2020/09/02 Python
Python txt文件如何转换成字典
2020/11/03 Python
Skyscanner加拿大:全球旅行搜索平台
2018/11/19 全球购物
Jones Bootmaker官网:优质靴子和鞋子在线
2020/11/30 全球购物
怎样从/向数据文件读/写结构
2014/11/23 面试题
linux比较文件内容的命令是什么
2013/03/04 面试题
分公司经理岗位职责
2013/11/11 职场文书
银行见习期自我鉴定
2014/01/29 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
交流会主持词
2015/07/02 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
2021/04/04 Servers
python Tkinter的简单入门教程
2021/04/11 Python
Win11右下角图标点了没反应怎么办?Win11点击右下角图标无反应解决方法汇总
2022/07/07 数码科技