python oracle

本文介绍了一段Python脚本,通过cx_Oracle和Redmine API实现每3分钟自动查询Redmine项目中未完成的操作记录,更新数据库并同步至REDMINE_OPERATION_LOG_NEW表。涉及的关键步骤包括连接数据库、获取Issue信息并更新操作状态。
摘要由CSDN通过智能技术生成
# -*- coding: utf-8 -*-
import cx_Oracle as cx

import requests
import json

import sys
import os


from redminelib import Redmine

from time import sleep
from retrying import retry

'''
https://pypi.org/project/cx-Oracle/5.3/#files
https://www.jianshu.com/p/f449b5199178 
其中第二步自己一般都有client, 把文件复制粘贴下就可以
'''

@retry  #如果出现异常,重试 ,网络异常是免不了的.很有用
def batchRun(): # 每3分钟查询一次列表
    redmine = Redmine('http://xxxx/redmine', username='xxxng', password='1xxx')
    project = redmine.project.get('msxxxxx0')
    con = cx.connect('MxxxxxG','Dxxxx6','192xxxxre')
    schema_cursor = con.cursor()
    query_cursor = con.cursor()
    update_cursor = con.cursor()
    schema_cursor.execute('alter session set current_schema= xxx')


    while 1==1 :# 每3分钟查询一次列表
        print("loop begin")
        sleep(30*1)# 每3分钟查询一次列表
        
        result = query_cursor.execute(" select * from REDMINE_OPERATION_LOG_NEW where a2 is  null")


        for row in result:

                redmine_no = row[7]
                print('query redmine no :'+str(redmine_no))
                issue = redmine.issue.get(redmine_no)

                a1 = ''
                a2 = issue.author.name
                a3 = issue.custom_fields[4]['value']  #分类模块
                a4 = issue.custom_fields[5]['value'] #所属部门
                a5 = ''
                a6 = issue.status.name.decode('utf-8')
                a7 = ''.join(issue.custom_fields[6]['value'])
                a8 = ''.join(issue.custom_fields[7]['value'])
                a9 = ''.join(issue.custom_fields[8]['value'])
                a10 = ''.join(issue.custom_fields[9]['value'])

                print(a1)
                print(a2)
                print(a3)
                print(a4)
                print(a5)
                print(a6)
                print(a7)
                print(a8)
                print(a9)
                print(a10)

                update_cursor.execute("update REDMINE_OPERATION_LOG_NEW set a1 = :1,a2 = :2,a3 = :3,a4 = :4,a5 = :5,a6 = :6,a7 = :7,a8 = :8,a9 = :9,a10 = :10 where redmine_no = :2"
                                                          ,[a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,redmine_no])


        schema_cursor.close()     
        query_cursor.close()
        update_cursor.close()

        con.commit()
        con.close()

    
#解决中文编码问题 python2.7 且  IDLE
stdi,stdo,stde=sys.stdin,sys.stdout,sys.stderr
reload(sys)
sys.setdefaultencoding('utf-8')
sys.stdin,sys.stdout,sys.stderr=stdi,stdo,stde
print sys.stdout

batchRun()

https://pypi.org/project/cx-Oracle/5.3/#files
https://www.jianshu.com/p/f449b5199178
其中第二步自己一般都有client, 把文件复制粘贴下就可以

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值