Skip to content

Commit 2996e16

Browse files
author
=
committed
init
1 parent 0586123 commit 2996e16

12 files changed

Lines changed: 333 additions & 0 deletions

File tree

config/__init__.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# -*- coding:utf-8 -*-
2+
"""
3+
保存配置信息
4+
"""
5+
# 数据库信息
6+
db_info_production = {
7+
'url': 'rm-2zeep0s2kx565dboj.mysql.rds.aliyuncs.com',
8+
'username': 'pdl',
9+
'password': 'waB*RJ4Gytn9L#Z3azYM4R2DT3hEMsu@',
10+
'database': 'pdl',
11+
'port': 3306
12+
}
13+
14+
db_info_test = {
15+
'url': 'htouhuidev.mysql.rds.aliyuncs.com',
16+
'username': 'pdl',
17+
'password': 'Bb4HUxLW[dTb4aAEAsCkWvK3ZqexGsgD',
18+
'database': 'pdl',
19+
'port': 3666
20+
}
21+
22+
db_info_local = {
23+
'url': 'localhost',
24+
'username': 'root',
25+
'password': 'root',
26+
'database': 'pdl',
27+
'port': 3306
28+
}
29+
30+
# OSS信息
31+
oss_info = {
32+
'ACCESS_KEY_ID': 'LTAIpQ5fEBYV2RY7',
33+
'ACCESS_KEY_SECRET': 'VRp9JoYKDJqYk1gwrKaS7VAiAMCnJL',
34+
'BUCKET': 'pdl',
35+
'ENDPOINT': 'http://oss-cn-beijing-internal.aliyuncs.com'
36+
}

datebase/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# -*- coding:utf-8 -*-

datebase/db_util.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# -*- coding:utf-8 -*-
2+
import MySQLdb
3+
import numpy as np
4+
import pandas as pd
5+
from config import *
6+
import socket
7+
8+
9+
localIP = socket.gethostbyname(socket.gethostname()) # 得到本地ip
10+
db_info = {}
11+
if localIP == '47.93.157.38' or localIP == '10.29.128.164':
12+
db_info = db_info_production
13+
elif localIP == '123.57.8.174' or localIP == '10.171.54.98':
14+
db_info = db_info_test
15+
else:
16+
db_info = db_info_local
17+
18+
19+
# 获取数据库连接
20+
def open_connection():
21+
db = MySQLdb.connect(db_info['url'], db_info['username'], db_info['password'], db_info['database'], db_info['port'], charset='utf8')
22+
return db
23+
24+
25+
# 关闭数据库连接
26+
def close_connection(db):
27+
db.close()
28+
29+
30+
# 执行SQL语句返回查询结果
31+
def select(db, sql):
32+
cursor = db.cursor()
33+
cursor.execute(sql)
34+
data = cursor.fetchall()
35+
pd_df = pd.DataFrame(np.array(data), columns=zip(*cursor.description)[0])
36+
return pd_df
37+
38+
39+
# 插入数据
40+
def insert(db, sql, param):
41+
cursor = db.cursor()
42+
cursor.execute(sql, param)
43+
db.commit()
44+
45+
46+
# DataFrame保存为Excel文件
47+
def to_excel(date_frame, file_name):
48+
writer = pd.ExcelWriter(file_name)
49+
date_frame.to_excel(writer, 'Sheet1')
50+
date_frame.to_excel(writer, 'Sheet2')
51+
writer.save()

datebase/sql.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# -*- coding:utf-8 -*-
2+
"""
3+
用来保存SQL
4+
"""
5+
6+
sql = """
7+
8+
"""

log/__init__.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# -*- coding:utf-8 -*-
2+
import logging
3+
4+
# 创建一个logger
5+
logger = logging.getLogger('my-logger')
6+
7+
# 设置日志输出级别
8+
logger.setLevel(logging.DEBUG)
9+
10+
# 创建一个handler,用于写入日志文件
11+
file_handler = logging.FileHandler('export-message.log')
12+
file_handler.setLevel(logging.INFO)
13+
14+
# 定义handler的输出格式
15+
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
16+
file_handler.setFormatter(formatter)
17+
18+
# 给logger添加handler
19+
logger.addHandler(file_handler)

mail/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# -*- coding:utf-8 -*-

mail/mail_test.py

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# -*- coding: utf-8 -*-
2+
3+
from email import encoders
4+
from email.header import Header
5+
from email.mime.base import MIMEBase
6+
from email.mime.text import MIMEText
7+
from email.mime.multipart import MIMEMultipart
8+
from email.utils import parseaddr, formataddr
9+
import smtplib
10+
11+
mail_host = "smtp.mxhichina.com"
12+
mail_username = "hjieqian_statistics@htouhui.com"
13+
mail_password = "htouhui@123"
14+
me = "hello" + "<" + mail_username + ">"
15+
16+
17+
def _format_address(name):
18+
nickname, address = parseaddr(name)
19+
return formataddr((Header(nickname, 'utf-8').encode(), address.encode('utf-8') if isinstance(address, unicode) else address))
20+
21+
22+
# 简单文本邮件
23+
def simple_mail(to_list, subject, content):
24+
msg = MIMEText(content, _subtype='plain', _charset='urf-8')
25+
msg['From'] = me
26+
msg['To'] = ";".join(to_list)
27+
msg['Subject'] = subject
28+
try:
29+
server = smtplib.SMTP()
30+
server.connect(mail_host)
31+
server.login(mail_username, mail_password)
32+
server.sendmail(me, to_list, msg.as_string())
33+
server.close()
34+
return True
35+
except Exception, e:
36+
print str(e)
37+
return False
38+
39+
40+
# HTML 邮件
41+
def html_mail(to_list, subject, content):
42+
msg = MIMEText(content, _subtype='html', _charset='utf-8') # 创建一个实例,这里设置为html格式邮件
43+
msg['From'] = me
44+
msg['To'] = ";".join(to_list)
45+
msg['Subject'] = subject
46+
try:
47+
s = smtplib.SMTP()
48+
s.connect(mail_host) # 连接smtp服务器
49+
s.login(mail_username, mail_password) # 登陆服务器
50+
s.sendmail(me, to_list, msg.as_string()) # 发送邮件
51+
s.close()
52+
return True
53+
except Exception, e:
54+
print str(e)
55+
return False
56+
57+
58+
# 带附件邮件
59+
def attach_mail(file_list, to_list, subject, content):
60+
# 创建一个带附件的实例
61+
msg = MIMEMultipart()
62+
msg.attach(MIMEText(content, _subtype='plain', _charset='utf-8'))
63+
64+
# 添加附件
65+
for attach_file in file_list:
66+
attachment = MIMEText(open(attach_file, 'rb').read())
67+
attachment.add_header('Content-Disposition', 'attachment', filename=attach_file.name)
68+
msg.attach(attachment)
69+
70+
# 加邮件头
71+
msg['From'] = me
72+
msg['To'] = ';'.join(to_list)
73+
msg['Subject'] = subject
74+
75+
# 发送邮件
76+
try:
77+
s = smtplib.SMTP()
78+
s.connect(mail_host)
79+
s.login(mail_username, mail_password)
80+
s.sendmail(me, to_list, msg.as_string())
81+
s.close()
82+
return True
83+
except Exception, e:
84+
print str(e)
85+
return False
86+
87+
88+
if __name__ == '__main__':
89+
to_address = 'nan.wang@htouhui.com'
90+
sub = '你好'
91+
cont = '<html><body><h1>你好!</h1></body></html>'
92+
html_mail([to_address, ], sub, cont)
93+
simple_mail([to_address, ], sub, cont)
94+

main.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# -*- coding:utf-8 -*-
2+
3+
import web
4+
from schedule.schedule_test import start_schedule
5+
6+
# URL 映射
7+
urls = (
8+
'/hello', 'hello',
9+
)
10+
11+
app = web.application(urls, globals())
12+
13+
14+
class Hello:
15+
def __init__(self):
16+
pass
17+
18+
def GET(self):
19+
return "hello, world!"
20+
21+
22+
if __name__ == '__main__':
23+
start_schedule()
24+
app.run()
25+

oss/__init__.py

Whitespace-only changes.

oss/download_file.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# -*- coding: utf-8 -*-
2+
3+
import oss2
4+
import os
5+
from config import oss_info
6+
from log import logger
7+
8+
9+
# 从OSS下载文件
10+
def download(file_path):
11+
# 阿里认证
12+
access_key_id = os.getenv('OSS_TEST_ACCESS_KEY_ID', oss_info['ACCESS_KEY_ID'])
13+
access_key_secret = os.getenv('OSS_TEST_ACCESS_KEY_SECRET', oss_info['ACCESS_KEY_SECRET'])
14+
bucket_name = os.getenv('OSS_TEST_BUCKET', oss_info['BUCKET'])
15+
endpoint = os.getenv('OSS_TEST_ENDPOINT', oss_info['ENDPOINT'])
16+
bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
17+
18+
# 检查文件在系统中是否存在
19+
exist = bucket.object_exists(file_path)
20+
if exist:
21+
result = bucket.get_object(file_path)
22+
content = b''
23+
for chunk in result:
24+
content += chunk
25+
return content
26+
else:
27+
logger.info('object not exist, file path : %s' % file_path)
28+
return None
29+

0 commit comments

Comments
 (0)