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

pymysql

时间:2018-06-03 19:26:07      阅读:173      评论:0      收藏:0      [点我收藏+]

标签: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语句注入攻击


pymysql

标签:select   mys   用户   from   print   insert   第一个   input   相对   

原文地址:https://www.cnblogs.com/liqilong/p/9129873.html

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