数据库入门-pymysql模块的使用
一、pymysql模块安装
由于本人的Python版本为python3.7,所以用pymysql来连接数据库(mysqldb不支持python3.x)
方法一:
#在cmd输入 pip3 install pymysql
方法二(pycharm IDE):
[File] >> [settings] >> [Project: study] >> [Project Interpreter] >>点击右上角“+”号,搜索框输入“pymysql”>> [Install按钮]
二、连接数据库
import pymysql # 创建链接得到一个链接对象 conn = pymysql.Connect(host="127.0.0.1", # 数据库服务器主机地址user="root", # 用户名password="123456", # 密码database="test", #数据库名称port=3306, # 端口号 可选 整型charset="utf8" # 编码 可选 )
还可以使用函数的形式连接数据库:
import pymysqldef connect_mysql():db_info = {'host':'192.168.13.253','user':'zfj','password':'123','port':3306,'database':'day40','charset':'utf8'}try:db = pymysql.Connect(**db_info)print('连接成功!')except Exception as e:print('e')return dbif __name__ == '__main__':db = connect_mysql()
函数的形式
三、操作数据库
1.连接对象的常用方法
commit()#提交稳定存储的更改 rollback()#回滚当前事务 autocommit_mode=无 #指定的自动提交模式。无表示使用服务器默认值。
要想操作数据库必须先建立游标对象,不需要自己创建调用数据库对象下面的cursor方法就可以了
2.游标对象
创建游标:
db = pymysql.connect(config) # 创建数据库链接对象 cus = db.cursor # 创建游标对象 print(dir(cus)) # 查看游标的方法
游标常用方法:
cus.cursor() #创建游标对象 cus.close() #关闭游标对象cus.excute(query,args=None) #执行查询参数: query(str) - 要执行的查询。args(元组,列表或字典) - 与查询一起使用的参数。(可选的)返回:受影响的行数返回类型:INTexecutemany(查询,args ) #针对一个查询运行多个数据参数: query - 要在服务器上执行的查询args - 序列或映射的序列。它用作参数。 此方法可提高多行INSERT和REPLACE的性能。否则它等同于使用execute()循环遍历args。cus.fetchone() #获取下一行 cus.fetchall() #获取所有行 cus.fetchmany(size =None) #获取几行
注:sql必须是字符串类型
3.示例
import pymysql # 创建链接得到一个链接对象 conn = pymysql.Connect(host="127.0.0.1", # 数据库服务器主机地址user="root", # 用户名password="admin", # 密码database="day42", #数据库名称port=3306, # 端口号 可选 整型charset="utf8" # 编码 可选 ) # 获取游标对象 pymysql.cursors.DictCursor指定 返回的结果类型 为字典 默认是元祖类型 cursor = conn.cursor(pymysql.cursors.DictCursor)# # 添加数据 # res = cursor.execute("insert into emp values(100,'胡歌','男',30,1,'job',60000)") # if res: # print("插入成功") # else: # print("插入失败")# 提交修改 因为pymysql 模块默认是启用事务的 你的sql语句 如果不提交 相当于没有执行# conn.commit() # res = cursor.execute("drop database day42")# res = cursor.execute("delete from t1 where id = 1") # print(res)try:cursor.execute("update moneyTable set money = money - 50 where name = '小明'")#如果小花的账户出问题了 无法更新数据 那就需要回滚cursor.execute("update moneyTable set money = money + 50 where name = '小花'")conn.commit() except:conn.rollback()cursor.close() conn.close()# 小明有100块 准备给小花转50 # update moneyTable set money = money - 50 where name = "小明"; # 发生一些别错误 如果发生了错误 就执行撤销操作 rollback; # update moneyTable set money = money + 50 where name = "小花";
View Code
四、安全问题
如何保证数据安全是近几年来火热的主题之一,这里不细讲,就说一些和pymysql相关的sql注入攻击。
#sql = "select *from user where user = '%s' and pwd = '%s';" % (input("input userName"),input("input password"))# 当用户输入的用户名为字符串 为 yy' -- 时 # 最终产生的sql select *from user where user = 'yy' -- ' and pwd = '987657890'; # -- 用于mysql注释 意思是 后面的内容忽略掉 # 从而导致 密码是否正确都能登录成功 # "select *from user where user = 'axxax' or 1=1;
那python是如何避免普通的sql注入的呢?
通过excute函数,将需要传的参数放到arg参数中,让pymysql帮你屏蔽
count = cursor.execute("select *from user where user = %s and pwd = %s;",args=(input("user"),input("pwd")))print(count) if count:print("login success") else:print("login error")cursor.close() conn.close()
读者想要学习更多关于安全的内容可以关注“实验吧”学习:http://www.shiyanbar.com/
部分参考 pymysql文档:https://pymysql.readthedocs.io/en/latest/index.html
连接对象规范:https://www.python.org/dev/peps/pep-0249/#connection-objects
转载于:https://www.cnblogs.com/mangM/p/9665049.html
数据库入门-pymysql模块的使用相关推荐
- python连接mysql用哪个模块_Python连接MySQL数据库之pymysql模块使用
Python3连接MySQL 本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用. PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服 ...
- Python连接MySQL数据库之pymysql模块使用
Python3连接MySQL 本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用. PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服 ...
- 可视化工具Navicat的使用/pymysql模块的使用
一.可视化工具Navicat的使用 1.官网下载:http://www.navicat.com/en/products/navicat-for-mysql 2.网盘下载:http://pan.baid ...
- 05 数据库入门学习-正则表达式、用户管理、pymysql模块
一.正则表达式 正则表达式用于模糊查询,模糊查询已经讲过了 like 仅支持 % 和 _ 远没有正则表达式灵活 当然绝大多数情况下 like足够使用 #语法 select *from table w ...
- pymysql模块操作数据库及连接报错解决方法
pymysql模块操作数据库及连接报错解决方法 参考文章: (1)pymysql模块操作数据库及连接报错解决方法 (2)https://www.cnblogs.com/zgngg/p/10607859 ...
- 利用PyMySQL模块操作数据库
连接到数据库 import pymysql # 创建链接得到一个链接对象 conn = pymysql.Connect(host="127.0.0.1", # 数据库服务器主机地址 ...
- python数据库操作之pymysql模块和sqlalchemy模块(项目必备)
pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 1.下载安装 pip3 install pymysql 2.操作数据库 (1).执行sql #! ...
- 数据库开发——MySQL——pymysql模块
一.介绍 之前我们都是通过MySQL自带的命令行客户端工具mysql来操作数据库,那如何在python程序中操作数据库呢? 这就用到了pymysql模块,该模块本质就是一个套接字客户端软件,使用前需要 ...
- 第二百七十九节,MySQL数据库-pymysql模块操作数据库
MySQL数据库-pymysql模块操作数据库 pymysql模块是python操作数据库的一个模块 connect()创建数据库链接,参数是连接数据库需要的连接参数 使用方式: 模块名称.conne ...
- python 接口自动化的sql验证_基于Python的接口自动化实战-基础篇之pymysql模块操做数据库...
引言 在进行功能或者接口测试时经常须要经过链接数据库,操做和查看相关的数据表数据,用于构建测试数据.核对功能.验证数据一致性,接口的数据库操做是否正确等.所以,在进行接口自动化测试时,咱们同样绕不开接 ...
最新文章
- DHTML【2】--HTML
- mysql concat例子_浅析MySQL中concat以及group_concat的使用
- JavaScript this指向相关内容
- eclipse java 注释_Eclipse中自动添加注释(两种)
- 机器学习实战-集成学习-23
- Hibernate关于父类子类的映射
- 用PHP调用WEBSERVICE
- 论破坏计算机信息系统罪,论破坏计算机信息系统罪
- 若想活得洒脱,就要学会看开
- Dynamic Multipoint ***(DM***)
- matlab和pspice,电力电子电路仿真---MATLAB和PSpice应用
- 大学计算机ppt制作步骤,PPT制作教程步骤方法_PPT制作技巧教程快捷键_PPT制作基础教程...
- iOS非越狱自动化脚本的方案
- 开机动画,铃声添加制作
- Linux --配置网络(通过网络访问服务器)
- 随手练——小米OJ 高弗雷勋爵
- java work stealing_工作窃取(work-stealing)算法
- JAVA学习导图、思维导图
- wifi情况下使用fiddler_如何对手机http进行抓包?Fiddler工具超好用
- 计算机科学内容基础,计算机科学的基础pdf
热门文章
- 公众号笔记: 2018年12月
- 抓包神器之Charles,常用功能都在这里了
- 深入理解【缺页中断】及FIFO、LRU、OPT这三种置换算法
- Python并发编程之线程中的信息隔离(五)
- Ubuntu 14 中给 APACHE2安装 SSL 模块 Enable SSL site on Ubuntu 14 LTS, Apache 2.4.7:
- codeforces 665A Buses Between Cities
- JAVA 设计模式 适配器模式
- java action url,Java ViewHandler.getActionURL方法代码示例
- C#中 构造函数的执行
- 将system.out.println的输出,输出调用类等其他参数的方法