标签:select mys 用户 from print insert 第一个 input 相对
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语句注入攻击
标签:select mys 用户 from print insert 第一个 input 相对
原文地址:https://www.cnblogs.com/liqilong/p/9129873.html