python 操作 MySQL 即相关问题
导入pymysql
import pymysql # 创建connect()对象
conn = pymysql.connect(
host = '127.0.0.1',
port = 3306,
user = 'root',
password = 'root',
database = 'db1',
charset = 'utf8'
)
# 产生一个游标对象 以字典的形式返回查询出来的数据,键是表的字段,值时字段对应的记录
cursor = conn.cursor(pymysql.cursors.DictCursor)
# 编写sql语句,赋值给一个变量
sql = 'select * from teacher'
# 执行传入的sql语句
res = cursor.execute(sql)
# print(res) # res 是执行语句返回的数据条数
print(cursor.fetchone()) # fetchone只获取一条数据 {'tid': 1, 'tname': '张磊老师'}
print(cursor.fetchone()) # 只获取一条数据 {'tid': 2, 'tname': '李平老师'} 获取的是第二条数据,因为游标在移动 # 控制光标移动
cursor.scroll(1,'absolute') # absolute 绝对移动,相对起始位置,往后移动几位
cursor.scroll(1,'relative') # relative 相对移动,现对于当前光标所在位置,往后移动几位 print(cursor.fetchall()) # fetchall获取所有数据,返回的是一个列表
# [{'tid': 1, 'tname': '张磊老师'}, {'tid': 2, 'tname': '李平老师'},
# {'tid': 3, 'tname': '刘海燕老师'}, {'tid': 4, 'tname': '朱云海老师'},
# {'tid': 5, 'tname': '李杰老师'}]
增删改查
import pymysql conn = pymysql.connect(
host = '127.0.0.1',
port = 3306,
user = 'root',
password = 'root',
database = 'db2',
charset = 'utf8',
autocommit = True # 这个参数配置后,增删改操作都不会需要手动加conn.commit了 )
cursor = conn.cursor(pymysql.cursors.DictCursor) '''
增删改操作对于数据库来说都是敏感操作
都必须加一句 conn.commit()
'''
# conn.commit()
# sql = 'insert into user(id,name,password) values(3,"dazhuang","321")' # 增数据
# sql = 'update user set name = "xiaozhuang" where id = 3' # 改数据
# sql = 'delete from user where id = 3' # 删数据
# cursor.execute(sql) username = input('>>>:')
pwd = input('>>>:')
sql = "select * from user where name = %s and password = %s" # 查数据
print(sql)
# 根据sql语句匹配用户输入的名合密码是否存在
res = cursor.execute(sql,(username,pwd)) # 能帮你自动过滤特殊符号,不免sql注入问题
# execute 能够识别%s并且自动过滤特殊符号 完成sql语句的拼接
print(res) # 若存在 返回的是数据的条数1,不存在返回的是0条数据
# 判断 res 是否有值
if res:
print(cursor.fetchall())
else:
print('用户名或密码错误')
sql注入问题
sql 注入问题:
就是利用注释等具有特殊意义的符号来利用mysql的漏洞 解决办法:
利用excute帮你去拼接数据 将 sql = "select * from user where name = %s and password = %s" %(username,pwd)
改为: sql = "select * from user where name = %s and password = %s"
res = cursor.execute(sql,(username,pwd))
# 不要手动去拼接查询的sql语句
username = input(">>>:").strip()
password = input(">>>:").strip()
sql = "select * from user where username='%s' and password='%s'"%(username,password) # 用户名正确
username >>>: jason' -- jjsakfjjdkjjkjs
# 用户名密码都不对的情况
username >>>: xxx' or 1=1 --asdjkdklqwjdjkjasdljad
password >>>: ''
python 操作 MySQL 即相关问题的更多相关文章
- python操作mysql数据库的相关操作实例
python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...
- python 操作 mysql基础补充
前言 本篇的主要内容为整理mysql的基础内容,分享的同时方便日后查阅,同时结合python的学习整理python操作mysql的方法以及python的ORM. 一.数据库初探 在开始mysql之前先 ...
- Windows下安装MySQLdb, Python操作MySQL数据库的增删改查
这里的前提是windows上已经安装了MySQL数据库,且配置完成,能正常建表能操作. 在此基础上仅仅需安装MySQL-python-1.2.4b4.win32-py2.7.exe就ok了.仅仅有1M ...
- python操作三大主流数据库(4)python操作mysql④python服务端flask和前端bootstrap框架结合实现新闻展示
python操作mysql④python服务端flask和前端bootstrap框架结合实现新闻展示 参考文档http://flask.pocoo.org/docs/0.11/http://flask ...
- Python操作Mysql实例代码教程在线版(查询手册)_python
实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding ...
- 【转】python操作mysql数据库
python操作mysql数据库 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库 ...
- 06 python操作MySQL和redis(进阶)
python操作mysql.redis 阶段一.mysql事务 主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息, ...
- Linux下使用Python操作MySQL数据库
安装mysql-python 1.下载mysql-python 打开终端: cd /usr/local sudo wget http://nchc.dl.sourceforge.net/sourcef ...
- 笔记-python操作mysql
笔记-python操作mysql 1. 开始 1.1. 环境准备-mysql create database db_python; use db_python; create tabl ...
随机推荐
- 谈谈redis的热key问题如何解决
引言 讲了几天的数据库系列的文章,大家一定看烦了,其实还没讲完...(以下省略一万字).今天我们换换口味,来写redis方面的内容,谈谈热key问题如何解决.其实热key问题说来也很简单,就是瞬间有几 ...
- es操作手册
0 _search查询数据时可以指定多个index和type GET /index1,index2/type1,type2/_search GET /_all/type1/_search 相当于查询全 ...
- [转帖]TPC-C解析系列05_TPC-C基准测试之存储优化
TPC-C解析系列05_TPC-C基准测试之存储优化 http://www.itpub.net/2019/10/08/3332/ 蚂蚁金服科技 2019-10-08 11:27:02 本文共3664个 ...
- Git master合并分支时提示“Already up-to-date”
Git master合并分支时提示"Already up-to-date" 在使用Git把当前分支合并到master提示"Already up-to-date&quo ...
- go tcp发送网络请求
//发送http请求 package main import ( "fmt" "net" "io" ) func main () { //使 ...
- 【dfs】Sequence Decoding
Sequence Decoding 题目描述 The amino acids in proteins are classified into two types of elements, hydrop ...
- WxWidgets与其他工具包的比较(15种方案)
一些一般注意事项: wxWidgets不仅适用于C ++,而且具有python,perl,php,java,lua,lisp,erlang,eiffel,C#(.NET),BASIC,ruby甚至ja ...
- 怎样通过正则匹配IP地址
Ipv4的地址是0.0.0.0 到 255.255.255.255, 匹配这个字段需要判断三种情况: 1. 如果第一位是0或1, 则第二位和第三位可以是0-9的任意数值: [01]\d\d 2. 如果 ...
- stm32 FSMC-TFTLCD显示
TFTLCD TFT液晶屏常用的通信模式主要有6800模式和8080模式,对于TFT彩屏通常都使用8080并口(简称80并口)模式 8080模式的读写时序其实跟LCD1602或者LCD12864的读写 ...
- enumerateKeysAndObjectsUsingBlock 的用法
block是一个有序列的指令代码块,通常在代码中间花括号括起来的objective-c代码,但是它能被传递和被分配局部变量,然后作为一个参数来传递,基本上可以把花括号中间的代码保存到数据结构里.看起来 ...