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实现的注册登录公告练习的更多相关文章

  1. 连接数据库+注册->登录->抽奖(有关联关系的接口)

    注册账号信息需要写入数据库,登录和抽奖时从数据库获取数据 一.连接数据库 my_sql.py: import pymysql class MyDb: def __init__(self,host,pa ...

  2. 使用ajax 做注册登录示例,

    需求:使用AJAX 做一个注册登录示例, 如用户名已存在, 在填写用户名时给与提示. 1:首先创建一个新的django项目.做好配置 在settings.py文件里做好数据库配置: 1. 告诉Djan ...

  3. 一步步开发自己的博客 .NET版(3、注册登录功能)

    前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做 ...

  4. Android开发案例 - 注册登录

    本文只涉及UI方面的内容, 如果您是希望了解非UI方面的访客, 请跳过此文. 在微博, 微信等App的注册登录过程中有这样的交互场景(如下图): 打开登录界面 在登录界面中, 点击注册, 跳转到注册界 ...

  5. 如何设计一个 App 的注册登录流程?

    移 动设备发力之前的登录方式很简单:用户名/邮箱+密码+确认密码,所有的用户登录注册都是围绕着邮箱来做.随着移动设备和社交网络的普及,邮箱不再是唯 一,渐渐的出现了微博,QQ,微信等第三方登录方式,手 ...

  6. Discuz! X2.5判断会员登录状态及外部调用注册登录框

    Discuz! X2.5判断会员登录状态及外部调用注册登录框 有关discuz论坛会员信息,收集的一些资料: 用dedecms+discuz做了个门户加论坛形式的网站,但是dedecms顶部目前只能q ...

  7. 解决stackoverflow打开慢不能注册登录

    http://blog.csdn.net/dream_an/article/details/50280977 解决stackoverflow打开慢不能注册登录 标签: stack overflowfi ...

  8. Node.js基于Express框架搭建一个简单的注册登录Web功能

    这个小应用使用到了node.js  bootstrap  express  以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...

  9. 原生js验证简洁美观注册登录页面

    序 一个以js验证表单的简洁的注册登录页面,不多说直接上图 效果 主要文件 完整代码 sign_up.html 注册表单 <!DOCTYPE html> <html lang=&qu ...

随机推荐

  1. strcmp 的坑

    根据百度百科的:http://baike.baidu.com/view/1026924.htm 函数简介 原型:extern int strcmp(const char *s1,const char ...

  2. float f=3.4;是否正确?

    float f=3.4;是否正确? 不正确.3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换 ...

  3. leetcode-回溯

    题17: 方法一:回溯 class Solution: def letterCombinations(self, digits: str) -> List[str]: res = [] dic ...

  4. NX二次开发-获取矩阵值UF_CSYS_ask_matrix_values

    NX9+VS2012 #include <uf.h> #include <uf_csys.h> UF_initialize(); //获取WCS标识 tag_t WcsId = ...

  5. NX二次开发-创建功能区工具栏UF_UI_create_ribbon

    NX9+VS2012 1.打开D:\Program Files\Siemens\NX 9.0\UGII\menus\ug_main.men 找到装配和PMI,在中间加上一段 TOGGLE_BUTTON ...

  6. 2. Vim 概念扫盲

    Frm: http://www.linuxidc.com/Linux/2013-05/84031p2.htm 了解Vim的三个基本模式 当我们安装完一个编辑器后,肯定会打开它,然后在里面输入点什么东西 ...

  7. Spark 调优之数据倾斜

    什么是数据倾斜? Spark 的计算抽象如下 数据倾斜指的是:并行处理的数据集中,某一部分(如 Spark 或 Kafka 的一个 Partition)的数据显著多于其它部分,从而使得该部分的处理速度 ...

  8. 2D转换中的translate里调用matrix()的用法

    一开始,经常看到大佬们用matrix的方法,当时完全不会,不知道如何写.到后面,发现都是这样用,导致只能去认真看一下这个东西怎么用,要不然完全跟不上的节奏啊.因此建议大家去看下这篇文章,写的挺不错的, ...

  9. linux下使用scp在服务器之间拷贝文件 (转载)

    CentOS, 本地服务器,ip: 192.168.1.111Ubuntu, 远程服务器,ip: 192.168.1.112 1.拷贝远程服务器的目录到本地服务器远程服务器192.168.1.112上 ...

  10. Zookeeper怎么实现分布式锁?

    对访问资源 R1 的过程加锁,在操作 O1 结束对资源 R1 访问前,其他操作不允许访问资源 R1.以上算是对独占锁的简单定义了,那么这段定义在 Zookeeper 的"类 Unix/Lin ...