一、通过读取列表数据,写一个登录程序:
users=[ [\'Amy\', \'123456\'], [\'Ann\', \'456789\'], [\'Sarah\', \'123456abc\'] ]
1、登录,输入账号和密码,最多输入3次,3次还没有登录成功,提示次数超数
2、登录成功,提示:欢迎XXX登录,今日的日期是XXX,程序结束
3、账号和密码不能为空,要提示不能为空 ---字符串方法
4、账号和密码输入错误,提示错误,继续登录
5、输入的账号不存在,提示用户,算输错1次
编写程序题目分析:
代码如下:
import datetime users=[ [\'Amy\', \'123456\'], [\'Ann\', \'456789\'], [\'Sarah\', \'123456abc\'] ] usernames = [] passwords = [] for user in users: username,password = user usernames.append(username) passwords.append(password) # print(usernames) # print(passwords) for i in range(3): username = input(\'请输入用户名:\') password = input(\'请输入登录密码:\') if len(username) == 0 or password.strip() == \'\': # len() 长度为0 和 空字符串,效果是一样的 print(\'用户名或密码不能为空!\') elif username not in usernames: print(\'用户名不存在\') else: # index = usernames.index(username) # pwd = passwords[index] # if pwd == password: if [username,password] in users: print(\'欢迎%s登录,今天是%s! \'%(username,datetime.datetime.today())) break else: print(\'用户名或密码错误!\') else: print(\'错误次数过多!\')
二、通过读取文件,进行注册用户以及用户登录
1、程序用户注册,账号和密码存在文件里面:
(1)最多输入3次
(2)输入账号和密码,确认密码,密码长度在6-12位之间(注:密码包含大小写字母,数字)
(3)输入为空要提示
(4)用户已经存在不能注册
(5)两次密码要输入一致
编写程序题目分析:
代码如下:
f = open(\'users.txt\',\'a+\',encoding=\'utf-8\') f.seek(0) usernames = [] for line in f.readlines(): line = line.strip() # 防止文件里有空行 if line: username = line.split(\',\')[0] usernames.append(username) for i in range(3): username = input(\'username:\').strip() password = input(\'password:\').strip() cpassword = input(\'cpassword:\').strip() if not username or not password or not cpassword: print(\'账号/密码不能为空!\') elif len(password) <6 or len(password) >12: print(\'密码长度在6-12之间!\') elif password != cpassword: print(\'两次输入的密码不一致!\') else: l,u,d = False,False,False for p in password: if p.islower(): l = True elif p.isupper(): u = True elif p.isdigit(): d = True if not l or not u or not d : print(\'密码必包含大小写字母,和数字!\') elif username in usernames: print(\'用户已存在!\') else: f.write(\'%s,%s\n\'%(username,password)) print(\'注册成功!\') break else: print(\'错误次数过多!\') f.close()
2、用户登录程序,账号和密码从文件里面取
(1)最多输入3次
(2)账号和密码的为空校验
(3)不存在要提示
(4)登录成功结束
编写程序题目分析:
代码如下:
f = open(\'users.txt\',encoding=\'utf-8\') users = {} for line in f.readlines(): line = line.strip() if line: username = line.split(\',\')[0] password = line.split(\',\')[1] users[username] = password for i in range(3): username = input(\'username:\').strip() password = input(\'password:\').strip() if not username or not password : print(\'账号/密码不能为空!\') elif len(password) < 6 or len(password) > 12: print(\'密码长度在6-12之间!\') elif username not in users: print(\'用户不存在!\') elif password != users.get(username): print(\'密码错误!\') else: print(\'欢迎登录!\') break else: print(\'错误次数超限!\') f.close()
三、写一个管理商品的程序,商品文件格式在(product.json)里面(1、查看商品 2、新增商品 3、修改商品信息 4、删除商品)
商品文件信息(product.json):
{
"mac book":{
"count": 50,
"price": 8999
},
"矿泉水":{
"count": 100,
"price": 1.1
}
}
提供商品的增删改查功能:
(1)choice = input(\'请输入你的选择:1、查看商品 2、新增商品 3、修改商品 4、删除商品\')
(2)查看商品,输入商品名称,print单个商品的信息,价格,数量,输入all,查看所有商品
(3)新增商品,输入商品名称、数量、价格,数量是大于0的整数,价格必须是大于0的数值,如果商品存在,无法添加
(4)修改商品,输入商品名称、数量、价格,商品存在才可以修改,数量是大于0的整数,价格必须是大于0的数值
(5)输入商品名称,如果存在,删除
编写程序题目分析:
代码如下:
import json file_name = \'product.json\' # 文件名称不会发生变化,故定义常量 # 定义读取商品函数 def read_products(): with open(file_name,encoding=\'utf-8\') as fr: return json.load(fr) # 定义写入商品函数 def write_products(data): with open(file_name,\'w\', encoding=\'utf-8\') as fw: json.dump(data,fw,ensure_ascii=False,indent=4) # 定义数量函数 def is_digit(number): s = str(number) if s.isdigit(): if int(s) > 0: return True # 定义价格函数 def is_price(price): # >0的整数和小数都可以 s = str(price) if is_digit(s): return True else: if s.count(\'.\') == 1: #1.3 left,right = s.split(\'.\') if left.isdigit() and right.isdigit(): # 正整数 0.0 if float(s) > 0: return True # 定义查看商品函数 def show_product(): # 第一种先读取商品文件信息,然后输入商品名称,接下来作判断 # products = read_products() # product_name = input(\'请输入商品名称:\').strip() # if not product_name: # print(\'请输入商品名称:\') # elif product_name == \'all\': # print(products) # elif product_name not in products: # print(\'商品不存在!\') # else: # product = products.get(product_name) # print(\'商品信息:\',product) # 第二种先输入商品名称,然后读取文件,接下来进行判断(推荐使用) product_name = input(\'请输入商品名称:\').strip if product_name: products = read_products() if product_name == \'all\': print(products) elif product_name not in products: print(\'商品不存在!\') else: product = products.get(product_name) print(\'商品信息:\',product) else: print(\'不能为空!\') # 定义新增商品函数 def add_product(): product_name = input(\'请输入商品名称:\').strip() price = input(\'请输入商品价格\').strip() count = input(\'请输入商品数量:\').strip() if product_name and price and count: if is_price(price) and is_digit(count): products = read_products() if product_name not in products: products[product_name] = {"count":count,"price":price} write_products(products) print(\'商品新增成功!\') else: print(\'商品已经存在!\') else: print(\'价格/数量不合法!\') else: print(\'不能为空!\') # 定义修改商品函数 def modify_product(): product_name = input(\'请输入商品名称:\').strip() price = input(\'请输入商品价格\').strip() count = input(\'请输入商品数量:\').strip() if product_name and price and count: if is_price(price) and is_digit(count): products = read_products() if product_name in products: products[product_name] = {"count": count, "price": price} write_products(products) print(\'商品修改成功!\') else: print(\'商品不存在\') else: print(\'价格/数量不合法!\') else: print(\'不能为空!\') # 定义删除商品函数 def del_product(): product_name = input(\'请输入商品名称:\').strip() if product_name: products = read_products() if product_name not in products: print(\'商品不存在!\') else: products.pop(product_name) write_products(products) else: print(\'不能为空!\') # 商品管理 choice = input(\'1、查看商品 2、新增商品 3、修改商品 4、删除商品\') func_map = {\'1\': show_product(), \'2\': add_product(),\'3\': modify_product(),\'4\':del_product()} if choice in func_map: func_map[choice] else: print(\'请输入正确的选项!\')
四、写一个删除日志的脚本,把三天前的日志并且为空的日志删除
1、首先需要执行造日志的脚本文件:造日志的脚本.py
def timestamp_to_str(timestamp=None,format=\'%Y-%m-%d %H:%M:%S\'): \'\'\'时间戳转格式化好的时间,如果没有传时间戳,就获取当前的格式化时间\'\'\' if timestamp: time_tuple = time.localtime(timestamp) #把时间戳转成时间元组 result = time.strftime(format,time_tuple) #把时间元组转成格式化好的时间 return result else: return time.strftime(format) import time,os,random l = [\'ios\',\'android\',\'nginx\',\'tomcat\',\'python\',\'blog\',\'apache\',\'mysql\',\'redis\'] for i in l: p = os.path.join(\'logs\',i) os.makedirs(p) for j in range(30): t = int(time.time())-86400*j time_str = timestamp_to_str(t,\'%Y-%m-%d\') log_name = \'%s_%s.log\'%(i,time_str) abs_file_path = os.path.join(\'logs\',i,log_name) fw = open(abs_file_path, \'w\', encoding=\'utf-8\') if random.randint(1,10)%2==0: fw.write(\'胜多负少防守打法双方都\') fw.close()
2、编写程序题目分析:
3、代码如下:
import os import time day = 60*60*24*3 def str_to_timestamp(str_time,format=\'%Y-%m-%d\'): time_tuple = time.strptime(str_time,format) return int(time.mktime(time_tuple)) def clean_log(path): if os.path.isdir(path): for cur_path,dirs,files in os.walk(path): for file in files: if file.endswith(\'.log\'): # android_2020-09-04.log file_time = file.split(\'.\')[0].split(\'_\')[-1] file_time_stamp = str_to_timestamp(file_time) ago_time_stamp = time.time() - day file_abs_path = os.path.join(cur_path,file) if file_time_stamp < ago_time_stamp or os.path.getsize(file_abs_path)==0: if time.strftime(\'%Y-%m-%d\') in file: continue os.remove(file_abs_path) else: print(\'路径错误!\') clean_log(\'logs\')
五、写一个产生双色球号码的程序,输入几就产生多少条:
1、产生的里面不能有重复的
2、产生的号码要1 2 3 4 5 6
3、红色球号码从1--33中选择
4、蓝色球号码从1--16中选择
例如:01 02 03 04 05 06 07
编写程序题目分析:
代码如下:
# 第一种方法 import random number = input(\'number:\').strip() if number.isdigit() and int(number) >0: l = [] while True: red = random.sample(range(1,34),6) red.sort() blue = random.sample(range(1,17),1) result = red + blue result = [str(ball).zfill(2) for ball in result] seq = \' \'.join(result) if seq not in l: l.append(seq) print(\'生成的双色球号码是:红球:%s 蓝球:%s\' %(\' \'.join(result[:6]),result[-1])) if int(number) == len(l): break
# 第二种方法 import random reds = [str(ball).zfill(2) for ball in range(1,34)] blues = [str(ball).zfill(2) for ball in range(1,17)] number = input(\'number:\').strip() if number.isdigit() and int(number) >0: l = set() while int(number) !=len(l): red = random.sample(reds,6) red.sort() blue = random.sample(blues,1) result = red + blue result = [str(ball).zfill(2) for ball in result] seq = \' \'.join(result) + \'\n\' l.add(seq) print(\'生成的双色球号码是:红球:%s 蓝球:%s\' %(\' \'.join(result[:6]),result[-1])) with open(\'seq.txt\',\'w\',encoding=\'utf-8\') as fw: fw.writelines(l)
六、写一个函数,传入一个表名,把整个表里面的数据导出到excel
1、编写程序题目分析
2、方法一:export_table_to_excel.py
import pymysql,xlwt table_name = input(\'请输入你要导出的表名:\').strip() conn=pymysql.connect(host=\'118.24.3.40\',user = \'jxz\', password = \'123456\',db = \'jxz\', charset=\'utf8\',autocommit=True) #若不插入charset,有可能出现乱码 cur = conn.cursor(pymysql.cursors.DictCursor) #MySQL判断表是否存在:SELECT table_name FROM information_schema.TABLES WHERE table_name =\'yourname\'; table_exist_sql = "SELECT table_name FROM information_schema.TABLES WHERE table_name =\'%s\';"% table_name
cur.execute(table_exist_sql)
if cur.fetchall(): query_sql = \'select * from %s;\' % table_name cur.execute(query_sql) data = cur.fetchall() if data: book = xlwt.Workbook() #todo,没有处理表头 sheet = book.add_sheet(\'sheet1\') for index,key in enumerate(data[0]): #写表头 sheet.write(0,index,key) for row,item in enumerate(data,1): #写数据 for col,value in enumerate(item.values()): sheet.write(row,col,value) book.save(table_name+\'.xls\') print(\'导出完成!\') else: print(\'表中无数据,无法导出!\') else: print(\'表不存在!\') cur.close() conn.close()
3、方法二:export_table_to_excel.py
(1)定义tools函数模块:
import pymysql,xlwt import traceback MYSQL_INFO ={ \'host\' :\'118.24.3.40\', \'user\' :\'jxz\', \'password\' : \'123456\', \'db\' : \'jxz\', \'charset\':\'utf8\', \'port\' : \'3306\', \'autocommit\':True } def execute_sql(sql): conn =pymysql.connect(**MYSQL_INFO) # XX=XXX,XX=XX cur =conn.cursor(pymysql.cursors.DictCursor) try: cur.execute(sql) except: print(\'sql不正确\') traceback.print_exc() else: return cur.fetchall() # None [] finally: conn.close() cur.close() def write_excel(name,data): book = xlwt.Workbook() sheet = book.add_sheet(\'sheet1\') for index, key in enumerate(data[0]): # 写表头 sheet.write(0, index, key) for row, item in enumerate(data, 1): # 写数据 for col, value in enumerate(item.values()): sheet.write(row, col, value) book.save(name + \'.xls\')
(2)引用tools函数模块:
import tools def main(): table_name = input(\'请输入你要导出的表名:\').strip() table_exist_sql = "SELECT table_name FROM information_schema.TABLES WHERE table_name =\'%s\';" % table_name if tools.execute_sql(table_exist_sql): query_sql = \'select * from %s;\' % table_name data = tools.execute_sql(query_sql) if data: tools.write_excel(table_name,data) print(\'导出完成!\') else: print(\'表中无数据,无法导出!\') else: print(\'表不存在!\') if __name__ == \'__main__\': main()
七、改写商品管理的程序,改为从数据库里面取数据
1、方法一:商品管理:product_simple.py
import json import tools # 定义读取商品函数 def read_products(): sql = \'select * from tmz_product_xzh;\' data = tools.execute_sql(sql) # [{\'id\':1,\'product_name\':\'XXX\',\'count\':XX,\'price\':XX}] d = {} for item in data: name = item.get(\'product_name\') count = item.get(\'count\') price = float(item.get(\'price\')) d[name]={\'count\':count,\'price\':price} return d # 定义写入商品函数 def write_products(data): truncate_sql =\'truncate table tmz_product_xzh\' tools.execute_sql(truncate_sql) for k,value in data.items(): count = value.get(\'count\') price = value.get(\'price\') insert_sql = \'insert into tmz_product_xzh(product_name,count,price) VALUES ("%s",%s,%s);\'%(k,count,price) tools.execute_sql(insert_sql) # 定义数量函数 def is_digit(number): s = str(number) if s.isdigit(): if int(s) > 0: return True # 定义价格函数 def is_price(price): # >0的整数和小数都可以 s = str(price) if is_digit(s): return True else: if s.count(\'.\') == 1: #1.3 left,right = s.split(\'.\') if left.isdigit() and right.isdigit(): # 正整数 0.0 if float(s) > 0: return True # 定义查看商品函数 def show_product(): # 第一种先读取商品文件信息,然后输入商品名称,接下来作判断 # products = read_products() # product_name = input(\'请输入商品名称:\').strip() # if not product_name: # print(\'请输入商品名称:\') # elif product_name == \'all\': # print(products) # elif product_name not in products: # print(\'商品不存在!\') # else: # product = products.get(product_name) # print(\'商品信息:\',product) # 第二种先输入商品名称,然后读取文件,接下来进行判断(推荐使用) product_name = input(\'请输入商品名称:\').strip if product_name: products = read_products() if product_name == \'all\': print(products) elif product_name not in products: print(\'商品不存在!\') else: product = products.get(product_name) print(\'商品信息:\',product) else: print(\'不能为空!\') # 定义新增商品函数 def add_product(): product_name = input(\'请输入商品名称:\').strip() price = input(\'请输入商品价格\').strip() count = input(\'请输入商品数量:\').strip() if product_name and price and count: if is_price(price) and is_digit(count): products = read_products() if product_name not in products: products[product_name] = {"count":count,"price":price} write_products(products) print(\'商品新增成功!\') else: print(\'商品已经存在!\') else: print(\'价格/数量不合法!\') else: print(\'不能为空!\') # 定义修改商品函数 def modify_product(): product_name = input(\'请输入商品名称:\').strip() price = input(\'请输入商品价格\').strip() count = input(\'请输入商品数量:\').strip() if product_name and price and count: if is_price(price) and is_digit(count): products = read_products() if product_name in products: products[product_name] = {"count": count, "price": price} write_products(products) print(\'商品修改成功!\') else: print(\'商品不存在\') else: print(\'价格/数量不合法!\') else: print(\'不能为空!\') # 定义删除商品函数 def del_product(): product_name = input(\'请输入商品名称:\').strip() if product_name: products = read_products() if product_name not in products: print(\'商品不存在!\') else: products.pop(product_name) write_products(products) else: print(\'不能为空!\') # 商品管理 choice = input(\'1、查看商品 2、新增商品 3、修改商品 4、删除商品\') func_map = {\'1\': show_product(), \'2\': add_product(),\'3\': modify_product(),\'4\':del_product()} if choice in func_map: func_map[choice] else: print(\'请输入正确的选项!\')
2、方法二:product_gooduse.py
import tools #获取单个商品信息的函数 def get_single_product(name): sql = \'select * from tmz_product_xzh where product_name = "%s";\' % name return tools.execute_sql(sql) # 定义数量函数 def is_digit(number): s = str(number) if s.isdigit(): if int(s) > 0: return True # 定义价格函数 def is_price(price): # >0的整数和小数都可以 s = str(price) if is_digit(s): return True else: if s.count(\'.\') == 1: #1.3 left,right = s.split(\'.\') if left.isdigit() and right.isdigit(): # 正整数 0.0 if float(s) > 0: return True # 定义查看商品函数 def show_product(): product_name = input(\'请输入商品名称:\').strip() if product_name: if product_name == \'all\': sql = \'select* from tmz_product_xzh;\' print(tools.execute_sql(sql)) else: product = get_single_product(product_name) if product: print(\'商品信息:\',product) else: print(\'您输入的商品不存在!\') else: print(\'不能为空!\') # 定义新增商品函数 def add_product(): product_name = input(\'请输入商品名称:\').strip() price = input(\'请输入商品价格:\').strip() count = input(\'请输入商品数量:\').strip() if product_name and price and count: if is_price(price) and is_digit(count): if get_single_product(product_name): print(\'商品已经存在!\') else: insert_sql = \'insert into tmz_product_xzh(product_name,count,price)\'\ \'VALUES ("%s",%s,%s);\' % (product_name,count,price) tools.execute_sql(insert_sql) print(\'商品新增成功!\') else: print(\'价格/数量不合法!\') else: print(\'不能为空!\') # 定义修改商品函数 def modify_product(): product_name = input(\'请输入商品名称:\').strip() price = input(\'请输入商品价格:\').strip() count = input(\'请输入商品数量:\').strip() if product_name and price and count: if is_price(price) and is_digit(count): if get_single_product(product_name): sql = \'update tmz_product_xzh set price=%s,count=%s where product_name="%s";\' %( price,count,product_name ) tools.execute_sql(sql) print(\'商品修改成功!\') else: print(\'商品不存在!\') else: print(\'价格/数量不合法!\') else: print(\'不能为空!\') # 定义删除商品函数 def del_product(): product_name = input(\'请输入商品名称:\').strip() if product_name: if get_single_product(product_name): sql= \'delete from tmz_product_xzh where product_name = "%s";\' %product_name tools.execute_sql(sql) print(\'商品已删除!\') else: print(\'商品不存在!\') else: print(\'不能为空!\') # 商品管理 choice = input(\'1、查看商品 2、新增商品 3、修改商品 4、删除商品\') func_map = {\'1\': show_product, \'2\': add_product,\'3\': modify_product,\'4\':del_product} if choice in func_map: func_map[choice]() else: print(\'请输入正确的选项!\')
八、写一个下载QQ群成员的QQ头像程序,传入一个群号,把这个群里所有人的qq头像下载到本地,如果这个人有群备注,那么图片的名称就是刘海洋.jpg如果没有就取昵称:
1、编写程序分析:
2、代码如下:download_imag_to_local.py
# 写一个程序,传入一个群号,把这个群里所有的人的QQ头像下载到本地 # 获取群成员信息接口:https://qun.qq.com/cgi-bin/qun_mgr/search_group_members # 调用接口:search_group_members(Nick昵称,card群备注) # 如果A同学有群备注,那么图片的名称就是:Bob.jpg # 如果A同学没有群备注,那么图片名称就是:28.jpg # Form Data # gc: 1078641913 # st: 0 # end: 20 # sort: 0 # bkn: 73612145 # cookie: pgv_pvi=328774656; RK=Bqzk3YEWb+; ptcz=4c3263932d8d5a48b929cd2283f1bde3146c1ee5c4f104796f0c8d95df45c3c8; tvfe_boss_uuid=7d887b37fe60ad85; pgv_pvid=3957380448; pgv_info=ssid=s6095095448; _qpsvr_localtk=0.3003351169111208; p_uin=o1270894070; traceid=830f93d7d9; pgv_si=s2666891264; enc_uin=LqUhmq_so7tn_55OuYQ1UA; uin=o1270894070; skey=@zAKP7lF3z; pt4_token=mxrCcJXWkoh7OkmQxzKPcGAN1wqDHNqMK0hrIJnXZhw_; p_skey=amB*w3nrfpXGRncsrH-elBWWaLZ4w4rFlYsjF0rwo2I_ # 头像下载地址:https://q4.qlogo.cn/g?b=qq&nk=XXXXXXXXX=140 import requests,os # 判断该文件夹是否存在,不存在自动创建 if not os.path.exists(\'qq_pics\'): os.mkdir(\'qq_pics\') # 进入创建的文件夹里面: os.chdir(\'qq_pics\') max_count = 1000 gc = 1078641913 bkn = 73612145 # 获取群信息 group_member_url = \'https://qun.qq.com/cgi-bin/qun_mgr/search_group_members\' size = 40 cookie = \'pgv_pvi=328774656; RK=Bqzk3YEWb+; ptcz=4c3263932d8d5a48b929cd2283f1bde3146c1ee5c4f104796f0c8d95df45c3c8; tvfe_boss_uuid=7d887b37fe60ad85; pgv_pvid=3957380448; pgv_info=ssid=s6095095448; _qpsvr_localtk=0.3003351169111208; p_uin=o1270894070; traceid=830f93d7d9; pgv_si=s2666891264; enc_uin=LqUhmq_so7tn_55OuYQ1UA; uin=o1270894070; skey=@zAKP7lF3z; pt4_token=mxrCcJXWkoh7OkmQxzKPcGAN1wqDHNqMK0hrIJnXZhw_; p_skey=amB*w3nrfpXGRncsrH-elBWWaLZ4w4rFlYsjF0rwo2I_\' count = 0 for j in range(0,max_count+1,size): # 0,20,3 # 0,20 21,41 42,62 63,83 84,104 # 0,20 20,40 40,60 60,80 80,100 data = {\'gc\':gc,\'st\':j+count,\'end\':j+size+count,\'bkn\':bkn} headers = {\'cookie\':cookie} r = requests.post(group_member_url,data,headers=headers) members = r.json() count +=1 if \'mems\' in members: # QQ图片下载的url地址 pic_url= \'https://q4.qlogo.cn/g?b=qq&nk=%s&s=140\' # 获取成员信息(列表格式) mems = members.get(\'mems\') for m in mems: qq = m.get(\'uin\') # 使用三元表达式:若取到了card就用card名称,取不到就取nick名称 name = m.get(\'card\') if m.get(\'card\') else m.get(\'nick\') r = requests.get(pic_url % qq) with open(name + \'.jpg\',\'wb\') as fw: fw.write(r.content) # 下载qq头像 print(\'下载完成 %s\'%name) else: print(\'没有获取到群成员信息!\') break
九、写两个接口(登录接口和支付接口)
1、编写程序分析:
2、代码如下:
(1)tools.py
import hashlib import pymysql,xlwt import traceback import redis MYSQL_INFO ={ \'host\' :\'118.24.3.40\', \'user\' :\'jxz\', \'password\' : \'123456\', \'db\' : \'jxz\', \'charset\':\'utf8\', \'port\' : 3306, \'autocommit\':True } REDIS_INFO = { \'host\':\'118.24.3.40\', \'password\':\'HK139bc&*\', \'db\':0, \'port\':6379, \'decode_responses\':True } def execute_sql(sql,more=False): conn =pymysql.connect(**MYSQL_INFO) # XX=XXX,XX=XX cur =conn.cursor(pymysql.cursors.DictCursor) try: cur.execute(sql) except: print(\'sql不正确\') traceback.print_exc() else: if more: return cur.fetchall() # None [{}] return cur.fetchone() # {‘XX’:\'XX\'} finally: conn.close() cur.close() def write_excel(name,data): book = xlwt.Workbook() sheet = book.add_sheet(\'sheet1\') for index, key in enumerate(data[0]): # 写表头 sheet.write(0, index, key) for row, item in enumerate(data, 1): # 写数据 for col, value in enumerate(item.values()): sheet.write(row, col, value) book.save(name + \'.xls\') def my_md5(s): s = str(s) s = s.encode() m = hashlib.md5(s) result = m.hexdigest() return result def redis_str(key,value=False,expire_time=None): r = redis.Redis(**REDIS_INFO) if value: r.set(key,value,expire_time) else: return r.get(key) def redis_hash(): pass def check_session(session_id): result = redis_str(session_id) if result: return result return False
(2)login_and_pay.py
import flask import tools import json import time import uuid server = flask.Flask(__name__) # 登录接口 @server.route(\'/api/login\',methods=[\'post\',\'get\']) def login(): username = flask.request.values.get(\'username\',\'\') password = flask.request.values.get(\'password\',\'\') if username.strip() and password.strip(): p = tools.my_md5(password) query_sql = \'select * from app_myuser where username="%s" and password ="%s";\'%(username,p) user_result = tools.execute_sql(query_sql) if user_result: session_str = \'%s%s%s\'%(username,time.time(),uuid.uuid4()) session_id = tools.my_md5(session_str) user_id = user_result.get(\'id\') user_result.get(\'username\') tools.redis_str(session_id,\'{"userid":%s,"username":"%s"}\' % (user_id,username) ,600) return json.dumps({\'code\':\'0\',\'msg\':\'登录成功!\',\'sessionid\':session_id},ensure_ascii=False) else: return json.dumps({\'code\':\'-1\',\'msg\':\'输入的用户名/密码错误!\'}) else: return json.dumps({\'code\':\'-1\',\'msg\':\'不能为空!\'}) # 支付接口 @server.route(\'/pay\',methods=[\'post\',\'get\']) def pay(): sessionid = flask.request.values.get(\'sessionid\',\'\') money = float(flask.request.values.get(\'money\')) session = tools.check_session(sessionid) if session: user = json.loads(session) user_id = user.get(\'user_id\') sql = \'select balance from app_myuser where id = %s;\' % user_id balance = tools.execute_sql(sql).get(\'balance\') if balance >= money: update_money = \'update app_myuser set balance = balance - %s where id = %s;\' %(money,user_id) tools.execute_sql(update_money) return json.dumps({\'code\':0, \'msg\':\'支付成功!\'},ensure_ascii=False) else: return json.dumps({\'code\':-1, \'msg\':\'余额不足!\'},ensure_ascii=False) else: return json.dumps({\'code\': -1, \'msg\': \'请重新登录!\'},ensure_ascii=False) if __name__==\'__main__\': server.run(host=\'0.0.0.0\',port=8888,debug=True)