码迷,mamicode.com
首页 > 数据库 > 详细

mysql复习1->pymysql相关

时间:2019-02-14 20:58:26      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:设置   input   字段   scroll   host   目的   class   color   import   

1.pymysql连接

技术图片
import pymysql
# 1. 建立连接
conn = pymysql.connect(
    host="localhost",
    port=3306, 
    db=db2, 
    user=root, 
    password=root)
# 2. 设置游标
cursor = conn.cursor(pymysql.cursors.DictCursor)  # 设置游标的具体类型,DictCursor拿到字段名
# 3. 执行sql语句
sql = select * from emp
res = cursor.execute(sql)  # 结果的行数
print(res)

# 需求: 具体的一条条记录
tag = cursor.fetchone()
print(tag)
print(tag[salary])
tag = cursor.fetchone()
print(tag)

# cursor.scroll(1, mode=‘relative‘) # 指针相对于上一次位置往后偏移1条记录
cursor.scroll(res - 1, mode=absolute) # 指针绝对, 游标永远从头开始偏移

# 查询全部
tags = cursor.fetchall()
print(tags)

cursor.close()
conn.close()
    
pymysql 连接数据库

2.sql 注入

技术图片
‘‘‘
sql语法中
注释: /**/  | --  | #

什么是sql注入:
通过书写sql包含(注释相关的)特殊字符, 让原有的sql执行顺序发生改变, 从而改变执行得到的sql

目的:
绕过原有的sql安全认证, 达到对数据库攻击的目的
‘‘‘
import pymysql
conn = pymysql.connect(host=localhost, port=3306, user=root, passwd=root, db=db2)
cursor = conn.cursor(pymysql.cursors.DictCursor)

# 登录

# 得到用户输入的账户密码
usr = input("请输入用户名: ") #abc
pwd = input("请输入密码: ") #123

# sql注入
# 1.知道用户名:  abc" -- hehe | ooo
# select * from user where usr="abc" -- hehe" and pwd="ooo"
# 2.不知道用户名 aaa" or 1=1 -- hehe | 000
# select * from user where usr="aaa" or 1=1 -- hehe" and pwd="000"

# 处理方式
# 对输入的账户密码做完全处理 => 不可能形成达到sql注入的特殊语法 => 正则

# 和数据库的账户密码进行配对
# sql = ‘select * from user where usr="%s" and pwd="%s"‘ % (usr, pwd)
# select * from user where usr="abc" and pwd="123"
# res = cursor.execute(sql)

# pymysql已经处理了sql注入
sql = select * from user where usr=%s and pwd=%s
res = cursor.execute(sql, (usr, pwd))

# print(res)
if res:
    print(login success)
else:
    print(login failed)

cursor.close()
conn.close()
SQL注入

3.增删改

import pymysql
conn = pymysql.connect(host=‘localhost‘, port=3306, user=‘root‘, passwd=‘root‘, db=‘db2‘)
cursor = conn.cursor(pymysql.cursors.DictCursor)

# 增
# sql1 = ‘insert into user(usr, pwd) values (%s, %s)‘
# cursor执行sql语句,在内存中完成了对数据的插入, 但不能将数据存放到硬盘
# 会将id完成自增
# 插入单条
# res = cursor.execute(sql1, ("opq", "123"))
# 插入多条
#res = cursor.executemany(sql1, [("aaa", "000"), ("bbb", "111")])
# print(res)
# 将内存中的数据提交给硬盘, 完成真实意义上的数据存储
# conn.commit()

# 删
# sql2 = ‘delete from user where usr=%s‘
# res = cursor.execute(sql2, ("aaa"))
# print(res)
# conn.commit()

# 改
sql3 = ‘update user set pwd=%s where usr=%s‘
res = cursor.execute(sql3, ("222", "bbb"))
conn.commit()

cursor.close()
conn.close()

 

mysql复习1->pymysql相关

标签:设置   input   字段   scroll   host   目的   class   color   import   

原文地址:https://www.cnblogs.com/yangyufeng/p/10376535.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!