pymysql

pymysql通用操作过程(查询不需要提交事务)
import pymysql

# 创建数据库连接
conn = pymysql.connect(host='127.0.0.1', port=3306, passwd='123456', db='test', charset='utf8')

# 创建游标
cursor = conn.cursor() # 参数cursor=pymysql.cursors.DictCursor可以设置返回的数据类型为字典

# 执行语句 r(受影响的行数)
'''
..........................
'''

# 提交事务
conn.commit()

# 关闭游标
cursor.close()

# 关闭连接
conn.close()

执行sql语句
1.
r = cursor.execute(sql) # r指受影响的行数

2.

# 参数进行传递
inp = input('请输入班级:')
r = cursor.execute('insert into class(caption) values(%s)', inp)

# 多行插入
l = [
('女',1,'鸭蛋1'),
('女',1,'鸭蛋2'),
('女',1,'鸭蛋3'),
]
r = cursor.executemany('insert into student(gender, class_id, sname) values(%s, %s, %s)', l)

# 获取最后的自增数字
cursor.lastrowid()

3.
# 取出结果的三种方式,一个,n个,所有的
cursor.fetchone()
cursor.fetchmany(n)
cursor.fetchall()
cursor.scroll(n,mode='absolute')# 绝对定位
cursor.scroll(n,mode='relative')# 相对定位

4.*****注意
# 字符串拼接sql语句可以执行,但是禁止操作,原因如下
sql = 'select username,password from user_info where username="%s" and password="%s"'
sql = sql % ('asfd" or 1=1 -- ',12313)
cursor.execute(sql)
result = cursor.fetchone()
print(result)

# 当将%s 替换成 asfd" or 1=1 -- ,由于sql语句的注释为 -- 所以会注释到密码部分,加上or语句,所以无论账号密码是什么,都会查找到第一个用户,这就是sql语句注入攻击



posted on 2018-06-03 17:32  风度翩翩的机器空  阅读(149)  评论(0编辑  收藏  举报

导航