连接数据库+注册->登录->抽奖(有关联关系的接口)
注册账号信息需要写入数据库,登录和抽奖时从数据库获取数据
一、连接数据库
my_sql.py:
import pymysql
class MyDb:
def __init__(self,host,password,user,db,port=3306,charset='utf8',autocommit=True):
try:
self.coon = pymysql.connect(host=host,password=password,
user=user,db=db,port=port,
charset=charset,autocommit=autocommit)
except Exception as e:
print('数据库连接失败!错误信息是%s'%e)
raise Exception('数据库连接失败!错误信息是%s'%e)
#主动抛出一个异常
else:
self.cur = self.coon.cursor(pymysql.cursors.DictCursor)
def select_all(self,sql):
try:
self.cur.execute(sql)
except Exception as e:
res = 'sql语句错误,%s\n,错误的sql是【%s】'%(e,sql)
print(res)
else:
res = self.cur.fetchall()
return res
def select_one(self,sql):
try:
self.cur.execute(sql)
except Exception as e:
res = 'sql语句错误,%s\n,错误的sql是【%s】'%(e,sql)
print(res)
else:
res = self.cur.fetchone()
return res
def other_sql(self,sql):
try:
self.cur.execute(sql)
except Exception as e:
res = 'sql语句错误,%s\n,错误的sql是【%s】'%(e,sql)
print(res)
return res
def __del__(self):
print('拜拜啦')
self.cur.close()
self.coon.close()
mysql = MyDb(host='ip',user='main',password='spz123456',db='main')
# res = mysql.select_all('select * from app_myuser;')
# print(res)
import redis
r = redis.Redis(host='ip',password='HK139bc&*',decode_responses=True)
二、注册->登录->抽奖
reg_login_choice.py
from my_sql import mysql,r
import unittest
import requests
class Choujiang(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.base_url = 'http://ip/'
cls.username = 'test_niuhy'
cls.passwd = 'aA123456'
def register(self):
#注册
url = self.base_url+'api/user/user_reg'
data = {'username':self.username,'pwd':self.passwd,'cpwd':self.passwd}
# sql = 'update app_myuser set is_admin = 1 where username = "%s";'%self.username
res = requests.post(url,data).json()
print('这是注册的结果,',res)
self.assertEqual(res.get('error_code'),1000,msg='注册没有成功 ,实际结果是%s ' %res)
def login(self):
#登陆
url = self.base_url + 'api/user/login'
data = {'username':self.username,'passwd':self.passwd}
res = requests.post(url,data).json()
self.assertIn('sign',str(res),msg='登陆没有成功,实际结果是 %s'%res)
userid = res.get('login_info').get('userId')
sign = res.get('login_info').get('sign')
print('登陆的结果',res)
return userid,sign
def choice(self,userid,sign):
#抽奖
url = self.base_url + 'api/product/choice'
data = {'userid':userid,'sign':sign}
res = requests.get(url,params=data).json()
print('抽奖的结果',res)
self.assertIn('product_name',str(res),msg='抽奖失败 实际结果是 %s'%res)
def test_main(self):
self.register()
userid,sign = self.login()
self.choice(userid,sign)
@classmethod
def tearDownClass(cls):
sql = 'delete from app_myuser where username="%s";'%cls.username
mysql.other_sql(sql)
redis_key = 'choujiang:%s'%cls.username
r.set(redis_key,0) #把抽奖次数设为0
print('这是收尾工作')
unittest.main()
# 1、注册、 把你的用户改成管理员 app_myuser is_admin字段代表是否为管理员
# 2、登陆、
# 3、添加商品 添加商品这里面是有文件的 app_product表
连接数据库+注册->登录->抽奖(有关联关系的接口)的更多相关文章
- ThinkPHP3.2.3框架下接入阿里云短信服务接口实现:注册登录
首先介绍下短信注册登录流程: 注册页面点击获取手机号验证码按钮,用jquery的click事件POST或GET方法把手机号发送到后台控制器: 后台控制器创建函数,收到手机号后生成随机码,例如:6位的随 ...
- django--调用百度AI接口实现人脸注册登录
面部识别----考勤打卡.注册登录.面部支付等等...感觉很高大上,又很方便,下面用python中的框架--django完成一个注册登录的功能,调用百度AI的接口,面部识别在网上也有好多教程,可以自己 ...
- Node.js基于Express框架搭建一个简单的注册登录Web功能
这个小应用使用到了node.js bootstrap express 以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...
- Node.js原生及Express方法实现注册登录原理
由于本文只是实现其原理,所以没有使用数据库,只是在js里面模拟数据库,当然是种中还是需要用数据库的. 1.node.js原生方法 ①html页面,非常简单,没有一丝美化~我们叫它user.html & ...
- vue2.0+koa2+mongodb实现注册登录
前言 前段时间和公司一个由技术转产品的同事探讨他的职业道路,对我说了一句深以为然的话: "不要把自己禁锢在某一个领域,技术到产品的转变,首先就是思维上的转变.你一直做前端,数据的交互你只知道 ...
- express+vue+mongodb+session 实现注册登录
上个月写了一篇文章是 express+mongodb+vue 实现增删改查. 只是简单的实现了增删改查功能,那么今天是在那个基础之上做了扩展,首先实现的功能有如下: 1. 支持注册,登录功能,用户可以 ...
- node.js 初学(二)—— 搭建注册/登录服务器
node.js 初学(二)—— 搭建注册/登录服务器 理论上来说,代码实现在理论和实际上是一样的.但实际上来说,他们不是 做一个最简单的用户注册登录功能 1.接口定义: 注册:/user?act=re ...
- 第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码
第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码 打码接口文件 # -*- coding: cp936 -*- import sys import os ...
- 巨蟒django之CRM1 需求分析&&表结构设计&&注册登录验证
1.需求分析 .项目 ()业务 ()权限的管理 .CRM customer relationship management 客户关系管理系统 .谁来使用CRM? 销售&&班主任& ...
随机推荐
- niosII SDRAM ,FLASH (学习特权)
环境: quartus v13.0 64位. DE2 cycloneII EP2C35F672C6N (学校的开发板,还是想同学借的呵呵) 主要实现flash的烧录,虽然实现了但是还是有很多运气的成 ...
- oracle导入数据和编码问题
配置contrl文件 load data characterset utf8 append into table role_res_gold fields terminated by ';' TRAI ...
- Aggregate可以做字符串累加、数值累加、最大最小值
Aggregate("", (m, n) => m + n + ".").TrimEnd('.'); .Aggregate(0, (m, n) => ...
- Canopy聚类算法
Canopy聚类算法(经典,看图就明白) 聚类算法. 这个算法获得的并不是最终结果,它是为其他算法服务的,比如k-means算法.它能有效地降低k-means算法中计算点之间距离的复杂度. 图中有一个 ...
- JAVA中跨平台分隔符
在Windows下的路径分隔符和Linux下的路径分隔符是不一样的,当直接使用绝对路径时,跨平台会暴出“No such file or diretory”的异常. 比如说要在temp目录下建立一个te ...
- java之yield(),sleep(),wait()区别详解-备忘笔记(转)
1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁.也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据.注意该方 ...
- 如何POST一个JSON格式的数据给java接口,获得返回数据
/** * 模拟post进行url请求 * @param string $url * @param json $post_data */ public function request_post($u ...
- Android适配器Adapter的学习
Android中有很多的适配器,首先看看这些适配器的继承结构 这些适配器中,BaseAdapter用的最多,也用的最熟,先放过他,从ArrayAdapter开始 一个listAdapter用来管理一个 ...
- jquery与原生js比较
以选择符为例,类似于这种 $(".class") 方式,在ie里面,肯定比$("#id") 低很多,而对于chrome和firefox,则因为提供了getEle ...
- 我搭建大数据Hadoop完全分布式环境遇到的坑---hadoop: command not found
搭建大数据hadoop环境,遇到很多问题,这里记录一部分,以备以后查看. [遇到问题].在安装配置完hadoop以后,需要格式化namenode,输入指令:hadoop namenode -forma ...