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 ...
随机推荐
- [转帖]浅谈响应式编程(Reactive Programming)
浅谈响应式编程(Reactive Programming) https://www.jianshu.com/p/1765f658200a 例子写的非常好呢. 0.9312018.02.14 21:22 ...
- 面向对象分析与设计—OOD部分
第三部分 面向对象设计 3.1 面向对象设计(OOD)的定义? 在面向对象分析阶段,已经针对用户需求建立起用面向对象概念描述的系统分析模型.在设计阶段,要考虑为实现系统而采用的计算机设备.操作系统.网 ...
- python 之 并发编程(线程Event、协程)
9.14 线程Event connect线程执行到event.wait()时开始等待,直到check线程执行event.set()后立即继续线程connect from threading impor ...
- Android 7.0 之后相机/文件读写等权限获取方式改变,导致开启相机闪退
在 Android 7.0 之前 Google 提供的动态申请权限的 API,可以调用相机拍照,访问SDcard等操作都只需要申请对应的权限,如下: <uses-permission andro ...
- oracle-3-Linux-11g安装-图形安装
在安装系统时就安装了图形桌面 参考博客地址:https://www.cnblogs.com/tibit/p/6134150.html 未参考,只是感觉不错:https://blog.csdn.net/ ...
- 优先队列问题 get it !!
首先 队列的基本用法 头文件 #include<queue> priority_queue < int/string/struct> q// q为队列的名字 基本操作 q.p ...
- Linux入职基础-1.2_U盘安装RedHat5具体步骤
从U盘安装RedHat5具体步骤 从U盘安装RedHat Linux的具体步骤: 准备工作: RHEL_5.6_i386_DVD.ISO文件 具体步骤: 1.解压并用ultraiso软件打开rhel- ...
- ReLU函数的缺陷
ReLU激活功能并不完美. 它有一个被称为 “ReLU 死区” 的问题:在训练过程中,一些神经元会“死亡”,即它们停止输出 0 以外的任何东西.在某些情况下,你可能会发现你网络的一半神经元已经死亡,特 ...
- Python——pip的安装与使用
pip 是 Python 包管理工具,该工具提供了对Python 包的查找.下载.安装.卸载的功能.目前如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具.Python 2.7 ...
- GoAccess 视图化access.log 日志
1.安装GoAccess 工具可以直接使用 apt-get install goaccess 2.使用goaccess命令将日志生成html文件 goaccess 日志路径 -o 输出HTML的路径 ...