接上一篇。
1、脚本写了没多久,但郁闷的是测通上面的脚本我花了很久,后来发现主要是字符集的问题。
我用的是Debian默认字符集为UTF8,python2.7默认字符集为ASCII。
后面,设置了python的字符集默认为UTF8,第一篇的脚本才测通了。
/usr/lib/python2.7/sitecustomize.py
# install the apport exception handler if available
import sys
sys.setdefaultencoding('UTF8')
try:
import apport_python_hook
except ImportError:
pass
else:
apport_python_hook.install()
2、然后发现RBT貌似不支持UTF8的中文参数,反正我没有测通,好吧,自己写了一个脚本将SVN上的中文注释更新到mysql中。
说明一下,RBT的这个问题,我已经向社区提交Bug了,亲测补丁有效,大家等待下一版本就好了。
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
Created on 2016-11-24
@author: Hansen
用于更新rb的说明
'''
import sys
import datetime
import MySQLdb
import nsvnutils
#记录日志
def nlog(logpath,msg):
fo = open(logpath,'a+')
try:
fo.write(msg+'\n')
finally:
fo.close()
#更新rb的reviewrequest说明
def update_rb_comment():
#获取连接
try:
connection=MySQLdb.connect(user='user',passwd="passwd",host='127.0.0.1',port=3306,db='db',charset='utf8')
subconnection=MySQLdb.connect(user='user',passwd="passwd",host='127.0.0.1',port=3306,db='db',charset='utf8')
#print('mysql connection ok')
nlog('/mnt/rb/sql.log','mysql connection ok')
except Exception as ex:
#print(str(ex))
nlog('/mnt/rb/sql.log',str(ex))
return
#获取需要处理的数据
try:
cursor=connection.cursor()
subcursor=subconnection.cursor()
sql="select id,summary from reviews_reviewrequest r where r.description='' or r.description is null"
cursor.execute(sql)
#print('mysql select ok')
nlog('/mnt/rb/sql.log','mysql select ok')
for row in cursor.fetchall():
rid=str(row[0])
ss=row[1].split('_Rev')
if len(ss)==2:
nsvnutils.get_repo_name(ss[0])
comment=nsvnutils.get_svn_log(ss[1])
commiter=nsvnutils.get_svn_commiter(ss[1])
subsql="update reviews_reviewrequest r set r.description='"+commiter+"_"+comment+"' where r.id="+rid
#print(subsql)
nlog('/mnt/rb/sql.log',subsql)
subcursor.execute(subsql)
else:
#print('skiping id='+rid+' summary='+row[1])
nlog('/mnt/rb/sql.log','skiping id='+rid+' summary='+row[1])
subconnection.commit()
except Exception as ex:
#print(str(ex))
nlog('/mnt/rb/sql.log',str(ex))
return
finally:
cursor.close()
subcursor.close()
connection.close()
subconnection.close()
#start here
nlog("/mnt/rb/sql.log", 'Starting job on '+datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
update_rb_comment()
nlog("/mnt/rb/sql.log", 'Ending job on '+datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
3、建立定时任务,执行脚本
crontab -l #10分钟运行一次 */10 * * * * /home/neohope/scripts/updatedb.py