MySQl 数据库 之 python模块 pymysql 简单介绍
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQl 数据库 之 python模块 pymysql 简单介绍,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3882字,纯文字阅读大概需要6分钟。
内容图文
二. 开始使用:
1, 在py文件中导入该模块:
import pymysql
2, 连接数据库服务器:
conn = pymysql.connect(host=‘127.0.0.1‘, port=3306, user=‘root‘, password=‘‘, db=‘db8‘, charset=‘utf8‘)
# 参数解读:
# host: 服务器地址;
# port: 服务器端口号, 这里注意要是 int;
# user: 登录用户;
# password: 用户密码;
# db: 要连接的库的名字;
# charset: 编码格式;
3, 创建游标:
cursor = conn.cursor()
4, 执行sql语句:
sql = "select * from userinfo where username=‘%s‘ and pwd=‘%s‘" %(user, pwd) # %s 一点要引起来.
result=cursor.execute(sql)
print(result) # 这里打印的是数据的个数.
# 注意: : : : 这里会产生sql 注入的问题, 后面会写, 要着重注意这一点
5, 关闭游标, 断开连接, 这里注意 一定要关闭,断开, 不然会产生内容浪费, 无法释放:
cursor.close()
conn.close()
实例: 使用Python实现用户登录,如果用户存在则登录成功(假设该用户已在数据库中)
import pymysql user = input(‘请输入用户名:‘) pwd = input(‘请输入密码:‘) # 1.连接 conn = pymysql.connect(host=‘127.0.0.1‘, port=3306, user=‘root‘, password=‘‘, db=‘db8‘, charset=‘utf8‘) # 2.创建游标 cursor = conn.cursor() #注意%s需要加引号 sql = "select * from userinfo where username=‘%s‘ and pwd=‘%s‘" %(user, pwd) print(sql) # 3.执行sql语句 cursor.execute(sql) result=cursor.execute(sql) #执行sql语句,返回sql查询成功的记录数目 print(result) # 关闭连接,游标和连接都要关闭 cursor.close() conn.close() if result: print(‘登陆成功‘) else: print(‘登录失败‘)实现:使用Python实现用户登录,如果用户存在则登录成功(假设该用户已在数据库中)
2.1 execute() sql注入的问题:
#最后那一个空格,在一条sql语句中如果遇到select * from userinfo where username=‘mjj‘ -- asadasdas‘ and pwd=‘‘ 则--之后的条件被注释掉了(注意--后面还有一个空格)
#1、sql注入之:用户存在,绕过密码
mjj‘ -- 任意字符
#2、sql注入之:用户不存在,绕过用户与密码
xxx‘ or 1=1 -- 任意字符
2.2 解决sql注入的问题的方法:
# 原来是我们对sql进行字符串拼接
# sql="select * from userinfo where name=‘%s‘ and password=‘%s‘" %(username,pwd)
# print(sql)
# result=cursor.execute(sql)
#改写为(execute帮我们做字符串拼接,我们无需且一定不能再为%s加引号了)
sql="select * from userinfo where name=%s and password=%s" #!!!注意%s需要去掉引号,因为pymysql会自动为我们加上, 且还会自动去空格.
result=cursor.execute(sql,[user,pwd]) #pymysql模块自动帮我们解决sql注入的问题,只要我们按照pymysql的规矩来。
三. 对目标表进行增, 删, 改操作: ( 注意无论是那个操作一定要进行conn.commit(), 不然数据会丢失);
commit()方法:在数据库里增、删、改的时候,必须要进行提交,否则插入的数据不生效。
import pymysql
username = input(‘请输入用户名:‘)
pwd = input(‘请输入密码:‘)
conn = pymysql.connect(host=‘localhost‘, port=3306, user=‘root‘, password=‘‘, db=‘db8‘, charset=‘utf8‘)
cursor = conn.cursor()
# 增:
# 插入一条数据:
# sql = "insert into userinfo(username,pwd) values (%s,%s)"
# effect_row = cursor.execute(sql,(username,pwd))
# 同时插入多条数据:
# cursor.executemany(sql,[(‘李四‘,‘110‘),(‘王五‘,‘119‘)])
# 改:
# sql = "update userinfo set username = %s where id = 2"
# effect_row = cursor.execute(sql,username)
# 删:
# sql = "delete from userinfo where id = 2"
# effect_row = cursor.execute(sql)
#一定记得commit
conn.commit()
# 4.关闭游标
cursor.close()
# 5.关闭连接
conn.close()
四. 查:fetchone()、fetchmany()、fetchall()
fetchone(): 获取下一行数据,第一次为首行;
fetchall(): 获取所有行数据源;
fetchmany(4): 获取4行数据; ( 对于分页查询很有帮助)
默认情况下,我们获取到的返回值是元组,只能看到每行的数据,却不知道每一列代表的是什么,这个时候可以使用以下方式来返回字典,每一行的数据都会生成一个字典:
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) #在实例化的时候,将属性cursor设置为pymysql.cursors.DictCursor
MySQl 数据库 之 python模块 pymysql 简单介绍
标签:下载 关闭 生效 effect bsp div commit host hone
本文系统来源:https://www.cnblogs.com/123zzy/p/9772637.html
内容总结
以上是互联网集市为您收集整理的MySQl 数据库 之 python模块 pymysql 简单介绍全部内容,希望文章能够帮你解决MySQl 数据库 之 python模块 pymysql 简单介绍所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。