用pymysql实现的注册登录公告练习
import pymysql
#1.连接服务器
conn=pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='123456',
database='公告'
)
#2.通过连接拿到游标对象
#默认的游标返回的是元祖类型,不方便使用,需要更换字典类型的游标
c=conn.cursor(pymysql.cursors.DictCursor)
is_login=[None]
def login_auth(func):
def wrapper(*args, **kwargs):
while not is_login[0]:
print('请先登录')
login(c,conn)
res=func(*args,**kwargs)
return res
return wrapper
#用户注册
def register(c,conn):
while True:
print('欢迎来到注册')
#输入用户信息
username=input('输入你的用户名:')
pwd=input('输入你的密码:')
#3.执行sql
sql='select * from user where username=%s'
if c.execute(sql,(username,)):
print('用户名已存在,请重新输入!')
continue
else:
sql2='insert into user(username,pwd) values(%s,%s)'
if c.execute(sql2,(username,pwd)):
print('注册成功!')
conn.commit()
break
else:
print('注册失败')
continue
#用户登录
def login(c,conn):
global is_login
if is_login[0]:
print('已经登录了不用再登录')
return
while True:
print('欢迎来到登录')
#输入用户信息
username=input('输入你的用户名:')
pwd=input('输入你的密码:')
sql='select * from user where username=%s and pwd=%s'
rec=c.execute(sql,(username,pwd))
if c.fetchall():
print('登录成功')
conn.commit()
is_login[0]=1
break
else:
print('账号密码错误')
#发布公告
@login_auth
def post_notice(c,conn):
print('欢迎来到发布公告')
notice_titile=input('请输入你要发布的公告标题:')
notice_content= input('请输入你要发布的公告内容:')
#执行sql
sql='insert into notice(titile,content) values(%s,%s)'
c.execute(sql,(notice_titile,notice_content))
print('公告发布成功')
conn.commit()
#查看公告
@login_auth
def show_notice(c,conn):
print('欢迎来到查看公告')
sql='select * from notice'
c.execute(sql)
print(c.fetchall())
conn.commit()
func_list={
1:register,
2:login,
3:post_notice,
4:show_notice
}
func_list_view='''
1:register,
2:login,
3:post_notice,
4:show_notice
5:quit
'''
while True:
print(func_list_view)
choice=input('请选择功能:')
if choice=='5':
break
else:
choice=int(choice)
func_list[choice](c,conn)
用pymysql实现的注册登录公告练习的更多相关文章
- 连接数据库+注册->登录->抽奖(有关联关系的接口)
注册账号信息需要写入数据库,登录和抽奖时从数据库获取数据 一.连接数据库 my_sql.py: import pymysql class MyDb: def __init__(self,host,pa ...
- 使用ajax 做注册登录示例,
需求:使用AJAX 做一个注册登录示例, 如用户名已存在, 在填写用户名时给与提示. 1:首先创建一个新的django项目.做好配置 在settings.py文件里做好数据库配置: 1. 告诉Djan ...
- 一步步开发自己的博客 .NET版(3、注册登录功能)
前言 这次开发的博客主要功能或特点: 第一:可以兼容各终端,特别是手机端. 第二:到时会用到大量html5,炫啊. 第三:导入博客园的精华文章,并做分类.(不要封我) 第四:做 ...
- Android开发案例 - 注册登录
本文只涉及UI方面的内容, 如果您是希望了解非UI方面的访客, 请跳过此文. 在微博, 微信等App的注册登录过程中有这样的交互场景(如下图): 打开登录界面 在登录界面中, 点击注册, 跳转到注册界 ...
- 如何设计一个 App 的注册登录流程?
移 动设备发力之前的登录方式很简单:用户名/邮箱+密码+确认密码,所有的用户登录注册都是围绕着邮箱来做.随着移动设备和社交网络的普及,邮箱不再是唯 一,渐渐的出现了微博,QQ,微信等第三方登录方式,手 ...
- Discuz! X2.5判断会员登录状态及外部调用注册登录框
Discuz! X2.5判断会员登录状态及外部调用注册登录框 有关discuz论坛会员信息,收集的一些资料: 用dedecms+discuz做了个门户加论坛形式的网站,但是dedecms顶部目前只能q ...
- 解决stackoverflow打开慢不能注册登录
http://blog.csdn.net/dream_an/article/details/50280977 解决stackoverflow打开慢不能注册登录 标签: stack overflowfi ...
- Node.js基于Express框架搭建一个简单的注册登录Web功能
这个小应用使用到了node.js bootstrap express 以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...
- 原生js验证简洁美观注册登录页面
序 一个以js验证表单的简洁的注册登录页面,不多说直接上图 效果 主要文件 完整代码 sign_up.html 注册表单 <!DOCTYPE html> <html lang=&qu ...
随机推荐
- redis设置自动启动
按照如下操作即可(可以自定义目录) mkdir /redis cd /redis wget http://download.redis.io/releases/redis-4.0.1.tar.gz t ...
- python之pyquery 学习
pyquery是jQuery的Python实现,可以用以解析HTML网页的内容.官网文档:http://pythonhosted.org/pyquery/ 下载:https://pypi.python ...
- could not load the tomcat server configuration ...
参考文档: https://blog.csdn.net/u013381651/article/details/51567758 问题解决. 原因是你把项目里的tomcat的server项目也关闭了, ...
- Python学习笔记(七)——魔法方法
1.构造和析造 魔法方法就是被双下划线包围的方法 __init__()方法 __init__方法默认没有参数,返回值为none.类实例化对象需有明确的初始化步骤要重写函数 >>> c ...
- python 编写暴力破解mysql用户名密码
本文摘自别人的,自己运行调试了一下#!/user/bin/env python#-*- coding:utf-8 -*- import pymysql#导入连接数据库的模块import sys cla ...
- ubuntu下网页视频或音频无法播放
有时,网页的音频或视频内容在 Firefox 下无法正常下载和播放.所需的插件没找到.过期.被阻止.和其他插件或扩展冲突,或者是内容由于某种原因被阻止.本文会帮助你解决这些问题. Flash 插件 F ...
- 1.Struts2快速入门
Struts2是一个基于MVC设计模式的Web层框架 Web层框架的特点:前端控制器模式 快速入门 1.下载Struts2的框架包 https://struts.apache.org/ 2.导入jar ...
- python+selenium遍历某一个标签中的内容
一.python+selenium遍历某一个标签中的内容 举个例子:我要获取列表标签<li></li>的内容 根据python+selenium定位到列表整体,使用for循环获 ...
- Python 分解质因数
def zys(n, value=[]): for i in range(2, int(n / 2 + 1)): if n % i == 0: value.append(i) zys(n / i, v ...
- js循环给li绑定事件实现和弹出对应的索引
原文:http://www.cnblogs.com/wuchuanlong/p/5945286.html 方法一,动态添加click事件,并添加属性 var itemli = document.get ...