Python通过调用mysql存储过程实现更新数据功能示例
作者:开心果汁 发布时间:2024-01-25 11:28:51
标签:Python,mysql,存储过程
本文实例讲述了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程序设计有所帮助。
来源:https://blog.csdn.net/u013421629/article/details/78479632
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 这篇论坛文章主要介绍了SQL Server 2005数据库镜像的配置脚本,详细内容请大家参考下文:SQL Server 2005数据库镜像配
- 比如一个详细的简历信息页面分 1、个人资料 2、工作经验 3、项目经验 4、其他信息 4个表单。 一般的需求是允许用户单独提交其中任何一个表
- Oracle数据文件默认大小上限是32G,如果要数据文件大于32G,需要在数据库创建之初就设置好。表空间数据文件容量与DB_BLOCK_SI
- 本文实例讲述了Python树莓派学习笔记之UDP传输视频帧操作。分享给大家供大家参考,具体如下:因为我在自己笔记本电脑上没能成功安装Open
- 多边形选区概述多边形选区是一种常见的对象选择方式,在一个子图中,单击鼠标左键即构建一个多边形的端点,最后一个端点与第一个端点重合即完成多边形
- 查询速度慢的原因很多,常见如下几种:1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)2.I/O吞吐量小,形成了瓶颈效
- 我就废话不多说了,大家看代码吧!dataset = ["el","tv"]model = [&quo
- 介绍Addit 是一个Python模块,除了提供标准的字典语法外,Addit 生成的字典的值既可以使用属性来获取,也可以使用属性进行设置。这
- 这篇论坛文章(赛迪网技术社区)主要介绍了一些特别有用但文档中没有介绍的sql server DBCC命令,详细内容请参考下文:以下是一些sq
- 已经11月了,不知道还有没有人看华强买瓜。。。要把华强卖瓜做成字符视频,总共分为三步读取视频把每一帧转为字符画把字符画表现出来 读
- 引言为了深入学习 kube-scheduler,本系从源码和实战角度深度学 习kube-scheduler,该系列一共分6篇文章,如下:ku
- 阅读上一篇:一个完美网站的101项指标.第三部分.易用性 设计体现了一个网站的艺术素养,然而并不是说您应当过分设计,设计风格应结合您的行业,
- 我自己测试一下,很多字符变成了 ‘?'。数据库连接已经是使用了 utf8 字符集:define("MYSQL_ENCODE
- 在建模时模型的超参数对精度有一定的影响,而设置和调整超参数的取值,往往称为调参。在实践中调参往往依赖人工来进行设置调整范围,然后使用机器在超
- 1。mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好mysql数据库提供了一种主从备份的机制,其实就是把主数
- 本文实例讲述了MySQL联合索引。分享给大家供大家参考,具体如下:员工表 userid部门表 deptid员工部门表条件:一个员工可以对应多
- 对于初学者来说,一份详尽又清晰明白的指南很重要。今天,猫猫跟大家一起,好好学习Python文件读写的内容,这部分内容特别常用,掌握后对工作和
- String含义:String是一个封装char[]数组的对象,字符串不可变String str = “abc&
- 如下所示:import datetime #获取两个日期间的所有日期 def getEveryDay(begin_date,end_date
- 今天看书讲T-SQL,看到了UNBOUNDED PRECEDING,就想比对下ROW_NUMBER()的运行速度。sql及相关的结果如下,数