#!/usr/bin/python
# -*- coding: utf-8 -*-
import os,sys
from MySQLdb import *
from optparse import OptionParser
sys.path.append('../')
HOST = 'host'
USER = 'user'
PAWD = 'pass'
DB = 'db'
#更新数据库函数
def updateAdventureCnt():
conn = Connect(host=HOST, user=USER, passwd=PAWD, port=0, charset="utf8", init_command="SET NAMES utf8")
conn.select_db(DB)
cur = conn.cursor()
print("database to connect successfully.")
sql = '''
select char_oid,expedition_point,cur_adventure_cnt FROM char_data
'''
try:
cur.execute(sql) # 执行sql语句
conn.commit() # 提交到数据库执行
rows = cur.fetchall()
for row in rows:
char_oid = row[0]
expediton_point = row[1]
cur_adventure_cnt = row[2] + expediton_point*3
UpdateSql = '''
UPDATE char_data SET cur_adventure_cnt=%d where char_oid = %d
'''% (cur_adventure_cnt,char_oid)
if expediton_point > 0:
cur.execute(UpdateSql)
conn.commit()
print('update ok')
except:
print('update error')
conn.rollback() # 发生错误后回滚
cur.close() # 关闭数据库
conn.close()
#parser设定关键字传参
def CreateParser():
"""
create command line parser
"""
#规定用法
usage = "--h hostname -u usename -p passwd DBNAME"
#构造实例对象
parser = OptionParser(add_help_option=True, description="",
usage=usage)
#短名--h,长名--hostname,对应dbhost
parser.add_option('--h', '--hostname', dest='dbhost',)
#短名-u,长名-username,对应dbuser
parser.add_option('-u', '--username', dest='dbuser')
#短名-p,长名-password,对应password
parser.add_option('-p', '--password', dest='password')
return parser
if __name__ == "__main__":
#调用实例
parser = CreateParser()
#获取传参,options为关键字传参,args其他参数
(options, args) = parser.parse_args()
#若有此关键字传参,则赋值
if options.dbhost:
HOST = options.dbhost
if options.dbuser:
USER = options.dbuser
if None != options.password:
PAWD = options.password
#若有此传参,则赋值
if len(args) > 0:
DB = args[0]
#调用数据库函数
updateAdventureCnt()
调用此脚本方法
在linux或者windows中:
python 文件位置/文件名 --h host -u user -p pass db
或者采用shell脚本调用
#!/bin/bash
python 文件位置/文件名 --h host -u user -p pass db