pymsql模块
老师的博客地址:http://www.cnblogs.com/wupeiqi/articles/5713330.html
通过pymysql 模块可以通过朋友去操作mysql 数据库,首先的在pip上配置好pymysql模块。然后进行如下操作,简单的模拟用数据库去登录的操作。
模拟登陆
mport pymysql
use=input('user:')
psw=input('password:')
#建立连接 host地址 database是具体的数据库
conn=pymysql.connect(host='localhost',user='root',password='',database='review60')
# 进入数据后建立光标
cursor=conn.cursor()
#info是指数据库的某个表 注意如果mysql是字符串的数据类型,一定要记得加上啊'',否则就会报错
sql="select * from info where user=%s and password=%s" %(use,psw,)
#光标执行sql里面的代码cursor.execute(sql)#这个其实是有返回值的,表示影响了及行,一般是删改查的时候会有用。#得到执行代码说返回的信息
result=cursor.fetchone()
#两个关闭,关闭数据库
cursor.close()
conn.close()
print(result)
if result:
print('登陆成功')
else:
print('登录失败')
上面的操作有一定的风险,请看下面。
当你的用户输入:sdf' or 1=1 -- 或者 :正确的用户名' -- 时肯定登录成功,
因为sql 就变成了select * from info where user='%s' and password='%s'
mysql的注释是 -- 所以就能够绕开后面的直接拿到信息
sql="select * from info where user=%s and password=%s"
cursor.execute(sql,use,psw)# cursor.execute(sql,[use,psw)])
cursor.execute(sql,[use,psw])
sql="select * from info where user=%(u)s and password=%(p)s" #%(use,psw,)
cursor.execute(sql,{'u':use,'p':psw})
输入多个时的写法
sql="select * from info where user=%s and password=%s"
cursor.execute(sql,[(1,2),(3,4)])#其他类似的操作也可
关于数据库的commit和注册用户
import pymysql
print('注册用户')
use=input('user:')
psw=input('password:')
conn=pymysql.connect(host='localhost',user='root',password='',database='review60')
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)#获取的是一个字典的形式
sql="insert into info(user,password) values (%s,%s)"#此时就不需要加上''了
a=cursor.execute(sql,[use,psw])
print('数据影响的行数:',a)#数据影响的行数
print('自增的id:',cursor.lastrowid)#获取新的自增的id
conn.commit()#一定要提交,不然写入的数据会没有效果,就是写入失败
cursor.close()
conn.close()
print('注册成功')
对于commit时,可以在处理完完个数据时,在commit这样的效率便会高上许多。
关于fetch与查询
import pymysql
print('查询数据库')
conn=pymysql.connect(host='localhost',user='root',password='',database='review60')
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)#得到信息是以字典的形式
sql='select * from info'
cursor.execute(sql)
a=cursor.fetchone()
print('前一条数据:',a)
#将光标往上移动一个
cursor.scroll(-1,mode='relative')
b=cursor.fetchmany(2)#得到前两条数据 print('前两条数据:',b)
#将光标移动到最开始的位置
cursor.scroll(0,mode='absolute')
c=cursor.fetchall()
print('全部数据:',c)
cursor.close()
conn.close()
注意由于fetchall是抓取全部的数据,你不知道数据库的东西到底有多大,所以的配合limit来使用。
。
pymsql模块的更多相关文章
- mysql创建用户与pymsql模块
mysql 创建用户及增删改查 创建mysql 用户 with grant option 表示用户不存在自主创建 grant [ select ……,insert ……| all ] on 库名.表名 ...
- python3操作pymsql模块
pymysql是python中操作mysql的模块. 1.pymysql模块的安装 pip3 install pymysql 也可以使用pycharm这个IDE工具来安装pymysql这个模块. 2. ...
- Python pymsql模块
pymsql pymysql这款第三方库可以帮助我们利用python语言与mysql进行链接 基本使用 首先要下载pymysql pip install pymsql 以下是pymysql的基本使用 ...
- pymsql模块使用
数据库连接客户端 链接:https://pan.baidu.com/s/1pM0h4SV 密码:614v sql指令基本用法:
- python - pymysql模块
pymsql 模块 基本应用介绍: # 安装模块 pip install PyMySql # 导入模块 import pymysql # 配置连接信息 config = { 'host':'127.0 ...
- MySQL数据库篇之pymysql模块的使用
主要内容: 一.pymysql模块的使用 二.pymysq模块增删改查 1️⃣ pymsql模块的使用 1.前言:之前我们都是通过MySQL自带的命令行客户端工具mysql来操作数据库, 那如何在p ...
- MySQL py模块的链接Navicat可视化工具
数据库可视化工具Navicat 1 基本操作: 1 库 表 字段 记录(增删改查) 2 添加主建,添加自增. 3 添加外键,外键的链接 4 模型建表,模型添加外键.(逆向数据库到模型,运行SQL文件 ...
- 循序渐进Python3(十)-- 1 -- pymysql
使用pymsql 模块操作数据库 #!/usr/bin/env python , ),()]), user='root', passwd='123456', db='test')# 创建游标curso ...
- Python自动化运维之18、Python操作 MySQL、pymysql、SQLAchemy
一.MySQL 1.概述 什么是数据库 ? 答:数据的仓库,和Excel表中的行和列是差不多的,只是有各种约束和不同数据类型的表格 什么是 MySQL.Oracle.SQLite.Access.MS ...
随机推荐
- 进程,线程,协程,异步IO知识点
进程: qq 要以一个整体的形式暴露给操作系统管理,里面包含对各种资源的调用,内存的管理,网络接口的调用等...对各种资源管理的集合 就可以成为 进程 线程: 是操作系统最小的调度单位, 是一串指令 ...
- redis 系列15 数据对象的(类型检查,内存回收,对象共享)和数据库切换
一. 概述 对于前面的五章中,已清楚了数据对象的类型以及命令实现,其实还有一种数据对象为HyperLogLog,以后需要用到再了解.下面再了解类型检查,内存回收,对象共享,对象的空转时长. 1.1 ...
- Oracle 查询结果集行数分析
本人曾去某金融软件公司面试,交流中面试官问的一个问题是:"如果有 A.B 两张表,A 表中有 2 条数据,B 表中有 200 条数据,请问 SELECT * FROM A,B 能查出多少条数 ...
- 如何使用kafka增加topic的备份数量,让业务更上一层楼
本文由云+社区发表 一.困难点 建立topic的时候,可以通过指定参数 --replication-factor 设置备份数量.但是,一旦完成建立topic,则无法通过kafka-topic.sh 或 ...
- Java多线程父子线程关系 多线程中篇(六)
有的时候对于Java多线程,我们会听到“父线程.子线程”的概念. 严格的说,Java中不存在实质上的父子关系 没有方法可以获取一个线程的父线程,也没有方法可以获取一个线程所有的子线程 子线程的消亡与父 ...
- [Luogu4705] 玩游戏
Description 给定两个长度分别为 \(n\) 和 \(m\) 的序列 \(a\) 和 \(b\).要从这两个序列中分别随机一个数,设为 \(a_x,b_y\),定义该次游戏的 \(k\) 次 ...
- C# 如何在Excel表格中插入、编辑和删除批注
概述 为文档添加必要的批注可以给文档使用者提供重要的提示信息,下面的示例中,将介绍通过C#编程语言来给Excel表格中的指定单元格内容添加批注,此外,对于已有的批注,如果需要修改,我们也可以进行编辑或 ...
- 关于我的博客(About My Blogs)
本文算是第一篇文章,记录工作/学习/生活中的觉得值得分享的东西 When,Where,Who,What,How,Why,尽可能每篇博文当作一个事件来描述. 也就是触发想写这篇文章的事件. 要坚持下来写 ...
- 开源前端脚本错误监控及跟踪解决项目BadJS试用
摘要: 试用BadJS. 原文:开源前端脚本错误监控及跟踪解决项目-BadJS 试用 作者:过错 Fundebug经授权转载,版权归原作者所有. BadJS 是 一个web 前端脚本错误监控及跟踪项目 ...
- 在ubuntu16.04中初次体验.net core 2.0
.net core运行在Linux中的例子.文章已经很多了,看了一些之后也想体验一下,顺便记录一下…… 环境:win10 1709.它内置的Linux子系统(这里安装的是Ubuntu 16.04) 一 ...