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脚本实现12306火车票查询系统
Sep 30 Python
python实现word 2007文档转换为pdf文件
Mar 15 Python
解决pycharm运行时interpreter为空的问题
Oct 29 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
Jun 05 Python
python实现比较类的两个instance(对象)是否相等的方法分析
Jun 26 Python
python的pygal模块绘制反正切函数图像方法
Jul 16 Python
Python+Pyqt实现简单GUI电子时钟
Feb 22 Python
Python实现快速排序的方法详解
Oct 25 Python
最小二乘法及其python实现详解
Feb 24 Python
python 下载m3u8视频的示例代码
Nov 11 Python
python爬虫 requests-html的使用
Nov 30 Python
Python 调用C++封装的进一步探索交流
Mar 04 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 读取文本文件内容并分页显示
2016/01/02 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
PHP7创建销毁session的实例方法
2020/02/03 PHP
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
2014/01/26 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
Vue.JS入门教程之事件监听
2016/12/01 Javascript
vue 路由嵌套高亮问题的解决方法
2018/05/17 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
使用typescript改造koa开发框架的实现
2020/02/04 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
python使用PyV8执行javascript代码示例分享
2013/12/04 Python
python实现的登陆Discuz!论坛通用代码分享
2014/07/11 Python
python获得一个月有多少天的方法
2015/06/04 Python
Django URL传递参数的方法总结
2016/08/28 Python
python实现折半查找和归并排序算法
2017/04/14 Python
Python构建XML树结构的方法示例
2017/06/30 Python
有趣的python小程序分享
2017/12/05 Python
python入门教程 python入门神图一张
2018/03/05 Python
Face++ API实现手势识别系统设计
2018/11/21 Python
python字典的值可以修改吗
2020/06/29 Python
Python必须了解的35个关键词
2020/07/16 Python
美国牙科折扣计划:DentalPlans.com
2019/08/26 全球购物
Pandora德国官网:购买潘多拉手链、戒指、项链和耳环
2020/02/20 全球购物
国培教师自我鉴定
2014/02/12 职场文书
小学运动会入场式解说词
2014/02/18 职场文书
班委竞选演讲稿
2014/04/28 职场文书
学生检讨书怎么写?
2014/10/10 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python