day48 work
1 navicat自己玩一玩
2 练习题一定要搞懂 照着我的思路一遍遍的看敲
3 熟悉pymysql的使用
4 sql注入产生的原因和解决方法 了解
5 思考:如何结合mysql实现用户的注册和登录功能?
import pymysql
#链接数据库
conn=pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='123456',
db='day48',
charset='utf8'
)
#获取游标
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
#注册功能
def register():
while True:
user=input('your name:').strip()
pwd=input('your pwd>>:').strip()
re_pwd=input('your pwd>>:').strip()
if pwd == re_pwd:
sql='insert into userinfo values(%s,%s);'
rows=cursor.execute(sql,(user,pwd))
# 提交
conn.commit()
#验证是否注册成功
sql = 'select * from userinfo where name = %s and pwd =%s;'
rows = cursor.execute(sql, (user, pwd))
if rows:
print('注册成功')
break
else:
print('注册失败')
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
else:
print('两次密码输入不一致')
#登录功能
def login():
while True:
user=input('your name>>:').strip()
pwd=input('your pwd>>:').strip()
sql='select * from userinfo where name = %s and pwd =%s;'
rows=cursor.execute(sql,(user,pwd))
if rows:
print('登录成功')
break
else:
print('登录失败')
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
func_dic={
'1':register,
'2':login,
}
def run():
while True:
print('''
1 注册
2 登录
''')
choice=input('>>:').strip()
if choice == 'q':
break
elif choice not in func_dic:
print('没有该编号')
continue
func_dic.get(choice)()
run()
day48 work的更多相关文章
- day48——css样式
day48 通过调试窗口还可以玩一个神奇的东西 document.body.contentEditable=true css样式 高度宽度 width宽度 height高度 块级标签能设置高度宽度,内 ...
- day48 navicat使用及pymysql的使用
目录 一.navicat介绍 1 基本使用 2 练习题 2.1 查询所有的课程的名称以及对应的任课老师姓名 2.2 查询平均成绩大于八十分的同学的姓名和平均成绩 2.3 查询没有报李平老师课的学生姓名 ...
- day48 前端高级选择器优先级
复习 1. 基础选择器 标签选择器(div) | 类选择器(.div1) | id选择器(#div2) <div class="div1" id="div2&quo ...
- Python:Day48 Jquery
引用方式: <script src="jquery-3.3.1.js"></script> jQuery就是一个jQuery对象,可以简写成$ 基本语法:$ ...
- python 全栈开发,Day48(标准文档流,块级元素和行内元素,浮动,margin的用法,文本属性和字体属性)
昨日内容回顾 高级选择器: 后代选择 : div p 子代选择器 : div>p 并集选择器: div,p 交集选择器: div.active 属性选择器: [属性~='属性值'] 伪类选择器 ...
- HTML day48
前端知识之HTML内容 HTML介绍 Web服务本质 import socket#引入套接字模块 sk = socket.socket()#实例化一个套接字对象 sk.bind(("12 ...
- day48
flex布局 响应式布局 过度 动画 flex布局 学习目的:基于之前所学的盒模型布局(display).浮动布局(float).定位布局(position),都不能很好的解决block垂直居中的问题 ...
- js实现回放拖拽轨迹-------Day48
今天有点小高兴,csdn博客浏览量过万了,在过去还从来没有过这么高的浏览量呢.不得不说.太多时候还是有些矫情.可看到这些鼓舞还是忍不住高兴啊,至少,这样让我有一种行内人员的感觉,吾道不孤啊. 闲话不多 ...
- MySQL之 视图,触发器,事物,存储过程,函数(Day48)
阅读目录 一.视图 二.触发器 三.事物 四.存储过程 五.函数 六.流程控制 一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名 ...
随机推荐
- rgb格式颜色与#000000格式颜色的转换
首先,#000000格式的颜色被成为十六进制颜色码: 6位数分为三组,每两位数一组,依次是红.黄.蓝颜色的强度: 而与此对应的,rgb(39,137,202)依次是十进制的红黄蓝颜色: 因此将rgb格 ...
- Activiti6 学习日志(一):整合 SpringBoot2.1.3
本章节记录整合过程和部分问题,目前整合并不完美后续会继续更新... 文档链接: 5.2.1 activiti用户手册 activiti用户手册 activiti6 API 技术栈: springboo ...
- CenterOS7 网络配置
在 centerOS7 中,已经取消了 ifconfig 命令.使用 ip addr来查询网络配置. 网卡需要手动设置一下: 进入路径 /etc/sysconfig/network-scripts/ ...
- IDEA环境Spring Boot 2.3整合Activiti 6.0,启动项目初始化表并创建核心服务
如下步骤照着抄就完事了. 一.新建一个spring boot项目,并引入相关依赖 <?xml version="1.0" encoding="UTF-8" ...
- Tftp文件传输服务器(基于UDP协议)
一个简单的UDP服务端与客户端 服务端: from socket import * #创建套接字 udp_server = socket(AF_INET,SOCK_DGRAM) msg_server ...
- (九)maven-surefire-plugin常用配置
原文链接:https://www.cnblogs.com/pixy/p/4718176.html 对maven-surefire-plugin有想了解的,看这篇:https://www.cnblogs ...
- java并发编程系列原理篇--JDK中的通信工具类Semaphore
前言 java多线程之间进行通信时,JDK主要提供了以下几种通信工具类.主要有Semaphore.CountDownLatch.CyclicBarrier.exchanger.Phaser这几个通讯类 ...
- 嵌入式QT开发视频教程-供参考
免费嵌入式QT开发视频教程 https://pan.baidu.com/s/1bprhJ2Z QT初级到高级编程视频教程--丁林松.rarhttp://www.jisoupan.com/share/2 ...
- Python在Linux下编译安装
[准备环境] Linux centos [前言] 1 linux下默认带Python,带的是2.7版本的 ,如果需要升级版本,需要把系统的自带的Python改名或者卸载,再次安装你所需要的Python ...
- Appium定位元素
定位元素规则 和 Selenium Web自动化一样,要操作界面元,必须先定位(选择)元素. Appius是基于 Selenium的,所以和 Selenium代码定位元素的基本规则相同 find el ...