1 Star 0 Fork 261

村西康师傅/project_20595785

forked from mktime/python-learn 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
downloads
qsbk
.gitignore
FSM.py
LICENSE
README.md
SSEncrypt.module
arch-install.md
auto_build.py
baidu_ocr.py
balance_config.ini
balance_query.py
balance_query_batch.txt
bencode.py
bloom_1.cpp
bloom_1.py
bloom_2.py
contacts.xml
crack_test.py
crack_wifi.txt
data-structure.py
delicious.md
delicious.xml
demo.c
dht_client.py
dou2.py
download.py
egcd.py
export_delicious.sh
fetchurl.py
find_repeat.py
findbig.py
flv2mp4.py
get_bookmarks.py
get_version.py
howto_terminate_thread.py
http_proxy.py
i3_config
import_ess_picture.py
ipfind.py
joseph-cycle.py
learn-class.py
learn-docker.md
learn-thread.py
learn_thread.py
linux-tips.md
merge_excel.py
monitor.sh
mydict.py
mysql_init.sql
new.txt
orm.py
parse_excel.py
parse_json.py
payload.py
pm25.py
print_ascii.py
problem.py
python-learn-1.py
python-learn-2.py
qiubai.py
remote.sh
repeated.sql
rpc_server.py
scan.py
scan2.py
score.py
screen.sh
sina_user.json
smz_report.py
sock5.py
sock_client.py
sock_serv.py
system_update.py
t_qiushi.sql
template.xml
test_img2pdf.py
test_pdf2images.py
torrent_client.py
tray.py
update.ico
urls.txt
v2ex.py
v2ex.txt
wifi-keep.sh
wind_crawl.py
xml2vcf.py
克隆/下载
balance_query.py 3.99 KB
一键复制 编辑 原始数据 按行查看 历史
private-user 提交于 5年前 . update readme
# -*- encoding=utf-8 -*-
import socket
import time
import random
import threading
import pymysql
import configparser
config = configparser.ConfigParser()
config.read('balance_config.ini')
log_file = config['LOG']['log_file']
input_file = config['ACCOUNT']['input_file']
batch_file = config['ACCOUNT']['batch_file']
mysql_host = config['MYSQL']['mysql_host']
mysql_user = config['MYSQL']['mysql_user']
mysql_password = config['MYSQL']['mysql_password']
mysql_db = config['MYSQL']['mysql_db']
ESB_SERVER_HOST = config['ESB']['ESB_SERVER_IP']
ESB_SERVER_PORT = config['ESB']['ESB_SERVER_PORT']
ESB_SERVER_ADDR = (ESB_SERVER_HOST, int(ESB_SERVER_PORT))
def get_last_batch():
return open(batch_file).read().strip()
def inc_batch():
next_batch = str(int(get_last_batch())+1)
open(batch_file, 'w').write(next_batch)
return next_batch
def log(msg):
timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
thread_name = threading.current_thread().getName()
f = open(log_file, 'a')
f.write('[' + timestamp + '][' + thread_name + ']' + msg + '\n')
f.close()
def query_balance(acct):
trancode = 'xxxx'.ljust(12, ' ')
BusiType = 'V10 '
ReqSysID = 'DWHS'
RespSysID = 'CORE'
yyyymmdd = time.strftime('%Y%m%d',time.localtime(time.time()))
hh24miss = time.strftime('%H%M%S',time.localtime(time.time()))
ServiceId = 'xxxxxxxx '
ServiceVer = '10'
ReqSeq = ReqSysID + yyyymmdd + hh24miss + str(random.randrange(100,999))
ReqDate = yyyymmdd
ReqTime = hh24miss
ChannelID = ReqSysID.ljust(8)
GlobalSeq = ReqSysID + yyyymmdd + hh24miss + str(random.randrange(1000,9999))
SignFlg = '0'
MacFlg = '0'
RetCode = 10 * ' '
EsbextFlag = 55*' '
fixed_header = 'V20 ' + ReqSysID + ReqSeq + yyyymmdd + hh24miss + ChannelID + GlobalSeq + RespSysID + ServiceId + ServiceVer + trancode + SignFlg + MacFlg + RetCode + EsbextFlag
xml_req = open('template.xml').read().strip()
xml_req = xml_req.replace('${AcctCd}', acct)
xml_req = xml_req.replace('\n', '')
data = fixed_header + xml_req
package_len = str(len(data)).rjust(8, '0')
data = package_len + data
log("reqxml:[{}]".format(data))
server_addr = ESB_SERVER_ADDR
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(server_addr)
s.send(data.encode())
recv = s.recv(65535)
retdata = recv.decode('utf-8')
log("respxml:[{}]".format(retdata))
balance = parse_balance(retdata)
log("balance:[{}]".format(balance))
return balance
def parse_balance(data):
balance = ''
try:
balance = data[data.find('<AcctAmt>')+9:data.rfind('</AcctAmt>')]
except:
log('解析余额失败[{}]'.format(data))
balance = ''
if data.find('不存在') > 0:
balance = ''
elif data.find('系统故障') > 0:
balance = ''
return balance
def main():
conn = pymysql.connect(host=mysql_host, user=mysql_user, password=mysql_password, database=mysql_db)
cur = conn.cursor()
lines = [x.strip() for x in open(input_file, encoding='utf8').readlines()]
next_batch = inc_batch()
log("batch:[{}]".format(next_batch))
for line in lines:
department, _, _, acctname, acct = line.split('|')
print(department, acctname, acct)
start = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
balance = query_balance(acct)
log(balance)
end = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
record = [department, acct, acctname, balance, start, end, next_batch]
save_record(cur, record)
cur.close()
conn.commit()
conn.close()
def save_record(cur, record):
department, acct, acctname, balance, start, end, seq = record
sql = '''
insert into balance
(seq, department, acctname, acct, balance, start, end)
values
('{}', '{}', '{}', '{}', '{}', '{}', '{}')
'''.format(seq, department, acctname, acct, balance, start, end)
cur.execute(sql)
if __name__ == '__main__':
main()
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/huteddy/python-learn.git
git@gitee.com:huteddy/python-learn.git
huteddy
python-learn
project_20595785
master

搜索帮助