sq注入与python操作mysql

mysq注入

就是利用mysql 语法 使其 查询条件永远为真

解决方案 让mysql帮我们拼接

import pymysql

conn = pymysql.connect(host='127.0.0.1', user='root', password="123",
                 database='day43')
cur = conn.cursor()
user = "akhksh' or 1=1 ;-- "
password = '*******'
sql = "select * from userinfo where username = %s and password =%s;"
print(sql)
cur.execute(sql,(user,password))
ret = cur.fetchone()
print(ret)
cur.close()
conn.close()

查询

# 光标会记录位置 取得那就会记录此时的位置
import pymysql
conn = pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    password='',
    database='daycs',
    charset='utf8',
)

cursor = conn.cursor(pymysql.cursors.DictCursor)
sql = "select * from book;"
ret = cursor.execute(sql)#ret 受影响的行数
print(ret)#ret 受影响的行数
cursor.scroll(1,'absolute')  #绝对移动,按照数据最开始位置往下移动1条
print(cursor.fetchmany())  #取出多条 默认取出1条
# print(cursor.fetchone())  #取出单条
# print(cursor.fetchall())  #取出所有的

cursor.scroll(3,'absolute')  #绝对移动,按照数据最开始位置往下移动3条
cursor.scroll(3,'relative')  #相对移动,按照当前光标位置往下移动3条
cursor.close()#关闭游标
conn.close()#关闭连接

# 光标会记录位置 取得那就会记录此时的位置
import pymysql
conn = pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    password='',
    database='daycs',
    charset='utf8',
)
cursor = conn.cursor(pymysql.cursors.DictCursor)
sql = "insert into book values(%s,'eg','知识没有用出版社',200,'2047-7-5');"
ret = cursor.execute(sql,('独孤九'))
print(ret)#ret 受影响的行数
conn.commit()# 增删改都必须进行提交操作(commit)

操作文件 建表

文件内容

倚天屠龙记   egon    北京工业地雷出版社   70  20190701
九阳神功    alex    人民音乐不好听出版社  5   20180704
九阴真经    yuan    北京工业地雷出版社   62  20170712
九阴白骨爪   jinxin  人民音乐不好听出版社  40  20190807
独孤九剑    alex    北京工业地雷出版社   12  20170901
降龙十巴掌   egon    知识产权没有用出版社  20  20190705
葵花宝典    yuan    知识产权没有用出版社  33  20190802
学python从开始到放弃|alex|人民大学出版社|50|20180701
学mysql从开始到放弃|egon|机械工业出版社|60|20180603
学html从开始到放弃|alex|机械工业出版社|20|20180401
学css从开始到放弃|wusir|机械工业出版社|120|20180502
学js从开始到放弃|wusir|机械工业出版社|100|20180730

利用python操作

#第一步手动创建表
# create table book(
#     id int primary key  ,
#     book_name char(20) not null,
#     author char(12) not null,
#     press char(20) not null,
#     price float(6,2),
#     pub_date date
# );

# 写入数据
import pymysql
conn = pymysql.Connection(host='127.0.0.1', user='root', password="",
                 database='daycs')
cur = conn.cursor()#右边
with open('book.txt',encoding='utf-8') as f:
    try:
        for line in f:
            line = line.strip()
            if '\t' in line:
                lst = line.split('\t')
            elif '|' in line:,
                lst = line.split('|')
            sql = 'insert into book(book_name,author,press,price,pub_date) values (%s,%s,%s,%s,%s);'
            cur.execute(sql,lst)
    except Exception:
        conn.rollback()#操作不成功 回滚
conn.commit()
cur.close()
conn.close()

# select book_name,price from book where author = 'egon'

# 2.找出最贵的图书的价格
# select max(price) from book;
# select price,book_name from book order by price desc limit 1;

# 3.求所有图书的均价
# select avg(price) from book;

# 4.将所有图书按照出版日期排序
# select * from book order by pub_date;

# 5.查询alex写的所有书的平均价格
# select avg(price) from book where author = 'alex'

# 扩展: 求所有人自己出版的图书的平均价格
# select author,avg(price) from book group by author
# 扩展: 求所有人自己出版的图书的平均价格>30的所有人
# select author from book group by author having  avg(price)>30

# 6.查询人民音乐不好听出版社出版的所有图书
# select * from book where press = '人民音乐不好听出版社';

# 7.查询人民音乐出版社出版的alex写的所有图书和价格
# select * from book where press = '人民音乐不好听出版社' and author = 'alex';

# 8.找出出版图书均价最高的作者
# select author,avg(price) as avg_p from book group by author order by avg_p desc limit 1;

# 9.找出最新出版的图书的作者和出版社
# select author,press from book order by pub_date desc limit 1;

# 10.显示各出版社出版的所有图书
# select press,group_concat(book_name) from book group by press;

# 11.查找价格最高的图书,并将它的价格修改为50元
# select max(price) from book;
# update book set price = 50 where price = 70

# 12.删除价格最低的那本书对应的数据
# select min(price) from book;
# delete from book where price = 5;

# 13.将所有alex写的书作者修改成alexsb
# update book set author = 'alexsb' where author = 'alex';

# 14.select year(publish_date) from book
# 自己研究上面sql语句中的year函数的功能,完成需求:
# 将所有2017年出版的图书从数据库中删除
# delete from book where year(publish_date) = 2017;

原文地址:https://www.cnblogs.com/saoqiang/p/12388399.html

时间: 2024-11-09 05:48:05

sq注入与python操作mysql的相关文章

exist 存在 Python操作mysql pymysql sql注入问题 # 39

0.补充 exist 存在 了解.py 1 """""" 2 """ 3 '''exist''' 4 EXIST 关键字表示存在 5 在使用EXIST 关键字时 , 6 7 内层查询语句不返回 查询的记录, 8 而是返回一个真假值 ,True|False 9 10 当返回True时,外层语句将进行查询, 11 当返回值为False 外层查询语句不进行查询 12 13 select * from emp where e

Python操作Mysql基础教程

Python操作Mysql 最近在学习python,这种脚本语言毫无疑问的会跟数据库产生关联,因此这里介绍一下如何使用python操作mysql数据库.我python也是零基础学起,所以本篇博客针对的是python初学者,大牛可以选择绕道. 另外,本篇博客基于的环境是Ubuntu13.10,使用的python版本是2.7.5. MYSQL数据库 MYSQL是一个全球领先的开源数据库管理系统.它是一个支持多用户.多线程的数据库管理系统,与Apache.PHP.Linux共同组成LAMP平台,在we

Python操作Mysql实例代码教程在线版(查询手册)_python

实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding: UTF-8 -*- #安装MYSQL DB for pythonimport MySQLdb as mdb con = None try:    #连接mysql的方法:connect('ip','user','password','dbname')    con = mdb.connect('

mysql数据库----python操作mysql ------pymysql和SQLAchemy

本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy 一.pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 pip3 install pymysql 使用操作 1.执行SQL 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import pymysql 4 5 # 创建连接 6 conn = pymysql.connect(

python基础篇-python操作mysql

本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymysql 下载安装 pip3 install pymysql #pip3命令的路径:安装路径下的Scripts目录 # 下载 pymysql到本地 # 解压到执行目录 # python2,默认无pip命令 # python3,默认自带pip3命令 python3 -m pip install --upgrade pip 更新pip #https://pypi.python.org/

数据库之Python操作MySQL

一.引言 Python操作MySQL一共有两种方式,第一种是用原生模块pymysql和mysqldb,这两种模块在py2中都支持,但是在py3中只支持pymysql,但是pymysql可以通过pymysql.install_as_MySQLdb()的方式构造成和mysqldb一样的使用:第二种方式是ORM框架 SQLAchemy. 二.pymysql 下载安装 pip install pymysql 增.删.改 import pymysql # 增,删,改除了sql语句不同,使用的方式一致 co

子查询、事务、python操作mysql、索引

复习 """ 1.单表查询 增删改查的完整语法 select distinct 字段 from 表 where group by having order by limit 比较:> < = 区间:between and | in | not in 逻辑: and or not 相似:like _% 正则:regexp 聚合函数:group_concat().max() having:可以对 聚合函数 结果进行筛选,不能使用 聚合函数 别名 order by:分组

联合分组、子查询、视图、事务、python操作mysql、索引

目录 联合分组.子查询.视图.事务.python操作mysql.索引 一.联合分组 二.子查询 三.all 与any:区间修饰条件 四.视图:view 视图的增删改 五.事务 5.1.事务的概念 5.2.事务的四大特性 六.pymysql 模块:python操作mysql 6.1 安装pymysql 模块 6.2 python用pymysql 操作mysql步骤 6.3 游标操作 6.4 pymysql事务 6.5 sql注入 七.索引 联合分组.子查询.视图.事务.python操作mysql.

python操作mysql ------- SqlAchemy正传

本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 pip3 install pymysql 使用操作 1.执行SQL #!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql # 创建连接 conn = pymysql.connect(host='127.0.0.1