怎样手动填加python变量_python(十一)接口开发、写日志、发邮件、python来发请求、手动添加环境变量...

接口开发

接口开发需要用到第三方模块flask.

1、登录的接口。

import flask

import json

import pymysql

import hashlib

server = flask.Flask(__name__)

#新建一个服务,把当前这个python文件当做一个服务

def my_db(sql):

conn = pymysql.connect(host='XX.XXX.XX.XX',user='XXX',password='XXXXXX',

db='XXX',port=3306,charset='utf8',autocommit=True)

cur = conn.cursor(pymysql.cursors.DictCursor)

cur.execute(sql)

res = cur.fetchone()

cur.close()

conn.close()

return res

def my_md5(s,salt=''):

s = s+salt

news = str(s).encode()

m = hashlib.md5(news)

return m.hexdigest()

@server.route('/login',methods=['get'])

def hello():

uname = flask.request.values.get('username')

pd = flask.request.values.get('passwd')

sql = 'select * from su_user where login_name="%s"'%uname

res = my_db(sql)

print(res)

if res:

if my_md5(pd) == res.get('pwd'):

res = {"code":0,"msg":"登录成功!"}

else:

res = {"code":1,"msg":"密码错误!"}

else:

res = {'code':2,"msg":"用户不存在"}

return json.dumps(res,ensure_ascii=False,indent=4)

#别人访问时,需要输入我自己的IP地址作为url中的IP,端口号为8999,这样别人也能访问我开发的接口;

#debug=True:代表修改完代码后不需要手动重启服务,直接就自动重启了

server.run(host='0.0.0.0',port=8999,debug=True)

#server.run()

2、入参不同的接口

import flask

import tools

import json,redis

@server.route('/api/stu')

def get_stu():

username = flask.request.values.get('name')#默认get不到的话,返回的值就是None

age = flask.request.values.get('age')

if username and age:

sql = "select * from app_student where name='%s' and age='%s'" % (username, age)

elif not username and age:

sql = "select * from app_student where age='%s'" % age

elif username and not age:

sql = "select * from app_student where name='%s'" % username

else:

sql = "select * from app_student"

res = tools.my_db2(sql)

return json.dumps(res,ensure_ascii=False,indent=4)

server.run(host='0.0.0.0',port=8999,debug=True)

3、入参是json类型的

@server.route('/api/add_stu',methods=['post'])

def add_stu():

if flask.request.is_json:#判断入参是否是json类型的

session_id = flask.request.json.get('session_id')

name= flask.request.json.get('name')

phone = flask.request.json.get('phone')

grade = flask.request.json.get('grade')

addr = flask.request.json.get('addr','北京')

sex = flask.request.json.get('sex','男')

age = flask.request.json.get('age',18)

gold = flask.request.json.get('gold',1000)

if session_id and name and phone and grade:

login_tag , data = check_session(session_id)

if login_tag:

insert_sql="insert into `jxz`.`app_student` ( `name`, `sex`," \

" `age`, `addr`, `grade`, `phone`, `gold`)" \

" values ( '%s', '%s', '%s', '%s', '%s', '%s', '%s');"%(name,sex,age,addr,grade,phone,gold)

tools.my_db(insert_sql)

res = {'code':0,'msg':'学生信息添加成功'}

else:

res = data

else:

res = {'code':3,'msg':'必填参数未填,请查看接口文档!'}

else:

res = {'code':5,'msg':'入参是json类型的!'}

return json.dumps(res, ensure_ascii=False)

4、入参是上传文件类型的

@server.route('/api/upload',methods=['post'])

def upload():

session_id = flask.request.values.get('session_id')

file = flask.request.files.get('file_name')

if session_id and file:

login_tag, data = check_session(session_id)

if login_tag:

new_file_name = '%s_%s'%(int(time.time()),file.filename)#file.filename能获取到上传的文件名

#防止文件名重复,所以把文件名前面加上了时间戳

abs_file_path = os.path.join(setting.UPLOAD_DIR,new_file_name)

#拼文件的绝对路径,这样子就放到了uploads目录下

file.save(abs_file_path)#保存文件

res = {'code':0,'msg':'上传文件成功!'}

else:

res = data

else:

res = {'code':3,'msg':'必填参数未填,请查看接口文档!'}

return json.dumps(res, ensure_ascii=False)

3、搭建框架思想

例如:图书管理系统

写日志

1、pip install nnlog

import nnlog

#nnlog.Logger.words='哈哈哈哈'

#默认打印debug级别的日志,默认when='D'表示每天产生日志,默认backCount=5代表保留最近5天的日志

#自动生成book_server.log文件,并且里面永远存最新的日志

log = nnlog.Logger('book_server.log',when='S',backCount=3)

# debug#最低级日志

# info倒数第二级

# warning整数第二级

# error#最高级日志

#log.surprise()

log.debug('xxx值是什么')

log.info('调用了什么xxx')

log.warning('xx警告!')

log.error('xxx出错!')

注意:默认是打印debug级别,那么会把debug、info、warning、error级别的日志都打印出来

如果指定打印是warning级别,那么会把warning和info级别的日志打印出来。

总结:会把指定的级别和比它自己高级别的日志打印出来。

发邮件

1、导入yagmail模块,导入的模块不可以直接“pip install yagmail”,因为发送中文附件时,会报乱码,所以需要导入.whl形式结尾的文件

需要手动安装:pip install +文件绝对路径 (pip install E:\python20181026\yagmail-0.10.212-py2.py3-none-any.whl)

2、需要知道发送邮箱的号码,与邮箱的授权码(不是邮箱登录密码),

代码如下:

import yagmail

username='xxxxx@163.com'

password='XXXXXXXX'#生成授权码,qq、163、126都是授权码

mail_server = 'smtp.163.com'

# mail_server = 'smtp.qq.com'

# mail_server = 'smtp.126.com'

m = yagmail.SMTP(user=username,password=password,host=mail_server)

# smtp_ssl=True,如果邮箱使用了安全协议,就需要加这个

#qq邮箱就是使用了安全协议

to = ['1xxx722@qq.com','wangxxx416516@163.com','51xx5@qq.com']

cc = ['6137xx17@qq.com','11xx42722@qq.com','136xx4@qq.com']

#to:收件人; cc:抄送;subject:主题;contents:内容;attachments:附件

m.send(to=to,cc=cc,subject='今天吃了吗',

contents='今天吃鱼肉了吗,吃饱没',

attachments=r'tools.py')

发送网络请求需要导入requests模块 pip installrequests

1、发送get请求

import requests

import random

url='http://127.0.0.1:8999/api/upload'

data = {'username':'testuser1','passwd':'111111'}

r = requests.get(url,params=data) #发get请求

r.json()#如果你请求的是一个接口的话,返回的是json,那就给你转成字典

r.text()#返回的是字符串

2、发送post请求

import requests

import random

url='http://127.0.0.1:8999/api/upload'

data = {'username':'testuser1','passwd':'111111'}

r = requests.post(url,data=data) #发post请求

3、入参是json类型的

import requests

import random

url='http://127.0.0.1:8999/api/upload'

r = requests.post(url,data=data) #发post请求

data = {

"session_id":"6ab8785039dcf50fb11c53acc1db7648",

"name":"zhouyongbo%s"%random.randint(1,99),

"phone":"111211345%02d"%random.randint(1,99),

"grade":"天秤座"

}

r = requests.post(url,json=data) #入参是json类型的

4、上传文件

r = requests.post(url,

data={'session_id':'6ab8785039dcf50fb11c53acc1db7648'},

files={'file_name':open('account.xls','rb') }

)

5、请求中带有cookie的

requests.get(url,headers={'cookie':'hdfjghdkghkdhgkdh'})

requests.get(url,cookies={'pt2ggui':'o0511402865','RK':'JQZpwBp1by'}) (使用不方便,很少用)

6、下载文件

url='https://qiniuuwmp3.changba.com/1127063572.mp4'

r = requests.get(url)

f = open('sdfsdf.mp4','wb')

f.write(r.content) #r.content #二进制,下载图片、下载文件的时候用

f.close()

手动添加环境变量

import sys,os

#手动加入环境变量的,这样的话,在其他人的电脑上运行就没有问题了

BASE_PATH=os.path.dirname(os.path.abspath(__file__))

sys.path.insert(0,BASE_PATH)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值