一、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模块的使用相关推荐

  1. python连接mysql用哪个模块_Python连接MySQL数据库之pymysql模块使用

    Python3连接MySQL 本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用. PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服 ...

  2. Python连接MySQL数据库之pymysql模块使用

    Python3连接MySQL 本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用. PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服 ...

  3. 可视化工具Navicat的使用/pymysql模块的使用

    一.可视化工具Navicat的使用 1.官网下载:http://www.navicat.com/en/products/navicat-for-mysql 2.网盘下载:http://pan.baid ...

  4. 05 数据库入门学习-正则表达式、用户管理、pymysql模块

    一.正则表达式 正则表达式用于模糊查询,模糊查询已经讲过了  like 仅支持 % 和 _ 远没有正则表达式灵活 当然绝大多数情况下 like足够使用 #语法 select *from table w ...

  5. pymysql模块操作数据库及连接报错解决方法

    pymysql模块操作数据库及连接报错解决方法 参考文章: (1)pymysql模块操作数据库及连接报错解决方法 (2)https://www.cnblogs.com/zgngg/p/10607859 ...

  6. 利用PyMySQL模块操作数据库

    连接到数据库 import pymysql # 创建链接得到一个链接对象 conn = pymysql.Connect(host="127.0.0.1", # 数据库服务器主机地址 ...

  7. python数据库操作之pymysql模块和sqlalchemy模块(项目必备)

    pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 1.下载安装 pip3 install pymysql 2.操作数据库 (1).执行sql #! ...

  8. 数据库开发——MySQL——pymysql模块

    一.介绍 之前我们都是通过MySQL自带的命令行客户端工具mysql来操作数据库,那如何在python程序中操作数据库呢? 这就用到了pymysql模块,该模块本质就是一个套接字客户端软件,使用前需要 ...

  9. 第二百七十九节,MySQL数据库-pymysql模块操作数据库

    MySQL数据库-pymysql模块操作数据库 pymysql模块是python操作数据库的一个模块 connect()创建数据库链接,参数是连接数据库需要的连接参数 使用方式: 模块名称.conne ...

  10. python 接口自动化的sql验证_基于Python的接口自动化实战-基础篇之pymysql模块操做数据库...

    引言 在进行功能或者接口测试时经常须要经过链接数据库,操做和查看相关的数据表数据,用于构建测试数据.核对功能.验证数据一致性,接口的数据库操做是否正确等.所以,在进行接口自动化测试时,咱们同样绕不开接 ...

最新文章

  1. DHTML【2】--HTML
  2. mysql concat例子_浅析MySQL中concat以及group_concat的使用
  3. JavaScript this指向相关内容
  4. eclipse java 注释_Eclipse中自动添加注释(两种)
  5. 机器学习实战-集成学习-23
  6. Hibernate关于父类子类的映射
  7. 用PHP调用WEBSERVICE
  8. 论破坏计算机信息系统罪,论破坏计算机信息系统罪
  9. 若想活得洒脱,就要学会看开
  10. Dynamic Multipoint ***(DM***)
  11. matlab和pspice,电力电子电路仿真---MATLAB和PSpice应用
  12. 大学计算机ppt制作步骤,PPT制作教程步骤方法_PPT制作技巧教程快捷键_PPT制作基础教程...
  13. iOS非越狱自动化脚本的方案
  14. 开机动画,铃声添加制作
  15. Linux --配置网络(通过网络访问服务器)
  16. 随手练——小米OJ 高弗雷勋爵
  17. java work stealing_工作窃取(work-stealing)算法
  18. JAVA学习导图、思维导图
  19. wifi情况下使用fiddler_如何对手机http进行抓包?Fiddler工具超好用
  20. 计算机科学内容基础,计算机科学的基础pdf

热门文章

  1. 公众号笔记: 2018年12月
  2. 抓包神器之Charles,常用功能都在这里了
  3. 深入理解【缺页中断】及FIFO、LRU、OPT这三种置换算法
  4. Python并发编程之线程中的信息隔离(五)
  5. Ubuntu 14 中给 APACHE2安装 SSL 模块 Enable SSL site on Ubuntu 14 LTS, Apache 2.4.7:
  6. codeforces 665A Buses Between Cities
  7. JAVA 设计模式 适配器模式
  8. java action url,Java ViewHandler.getActionURL方法代码示例
  9. C#中 构造函数的执行
  10. 将system.out.println的输出,输出调用类等其他参数的方法