一. 下载:

终端输入指令: pip3 install pymysql

如果失败就检查 pip 指令的环境变量是否配置;

若不会,则自行百度;

等待下载完成后, 在终端直接进入 python 环境, 导入该模块, 若无报错,则证明下载成功.(如下图所示)

二. 开始使用:

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实现用户登录,如果用户存在则登录成功(假设该用户已在数据库中)

importpymysql

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()ifresult: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()方法:在数据库里增、删、改的时候,必须要进行提交,否则插入的数据不生效。

importpymysql

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

python 数据库模块_MySQl 数据库 之 python模块 pymysql 简单介绍相关推荐

  1. 数据库和python的结合_mysql数据库备份和python结合

    mysql数据库备份. #1. 物理备份: 直接复制数据库文件,适用于大型数据库环境.但不能恢复到异构系统中如Windows. #2. 逻辑备份: 备份的是建表.建库.插入等操作所执行SQL语句,适用 ...

  2. 数据库和python的结合_MySQL数据库和Python如何结合?

    PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. 1.在python中连接数据库 先在terminal中进入mysql,用命 ...

  3. mysql数据库监控程序_mysql数据库监控利器lepus天兔工具安装和部署

    需要的核心包如下: 以下软件包只需要部署在监控机即可.被监控机无需部署. 1.MySQL 5.0及以上(必须,用来存储监控系统采集的数据) 2.Apache 2.2及以上 (必须,WEB服务器运行服务 ...

  4. mysql数据库语言_mysql数据库sql语句基础知识

    1.数据库操作 查看当前数据库 SELECT DATABASE(); 显示用户名,数据库版本 SELECT user(), version(); 创建库 CREATE DATABASE[ IF NOT ...

  5. mysql数据库语法_MySQL数据库基本语法

    SQL WHAT(SQL是什么?) Structured Query Language:结构化查询语⾔ WHY(为何要使用SQL?) 难道仅仅使用SQL Server Management Studi ...

  6. mysql数据库导出_MySQL数据库导入导出详解[转发]

    1. 概述 MySQL数据库的导入,有两种方法: 1) 先导出数据库SQL脚本,再导入: 2) 直接拷贝数据库目录和文件. 在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况 ...

  7. mysql数据库核对_Mysql数据库操作总结

    1: 部署数据库服务:mariadb        ---  yum install -y  mariadb(操作数据库命令)  mariadb-server 启动数据库服务:systemctl st ...

  8. 熟悉mysql基本数据库操作系统_MySQL数据库的基本操作

    1.数据库和数据库对象 数据库分为系统数据库和用户数据库. 数据库对象是指存储.管理和使用数据库的不同结构形式,主要包括表.视图.存储过程.函数.触发器和事务. 1.系统数据库 系统数据库是值安装完M ...

  9. mysql 数据库事务处理_MySQL数据库事务及其原理

    基本概念 MySQL 事务主要用于处理操作量大,复杂度高的数据. 银行转账是经典的解释事务的例子.用户A给用户B转账5000元主要步骤可以概括为如下两步. 第一,账户A账户减去5000元: 第二,账户 ...

  10. mysql数据库崩_mysql数据库崩溃_MySQL

    bitsCN.com 有一个crm系统,其中有做了一个报表统计,其中源码和数据库放在同意一台机子上,数据库用mysql:但在今天突然报错页面提示不能用root@locahost连接 用命令行登录,提示 ...

最新文章

  1. 【Qt】重新认识QObject
  2. 技术宅硬核跨年,DIY墨水屏日历:自动刷新位置、天气,随机播放2000多条「毒鸡汤」| 开源...
  3. linux时间格式怎么写,linux基础--时间格式
  4. LeetCode 1480. 一维数组的动态和(前缀和)
  5. Java Swing Mysql学生选课系统
  6. 中台之上(五):业务架构和中台的难点,都是需要反复锤炼出标准模型
  7. Redis 更新(set) key值 会重置过期时间问题
  8. OpenGLCG技术之Render To Texture
  9. 卷积神经网络应用领域和基本结构
  10. 无需安装软件架设NOD32升级服务器指南!
  11. oracle用户互信失效,LINUX SSH互信与用户家目录权限
  12. Flutter 数据库ORM框架floor使用详解
  13. 天津大学学硕和专硕的区别_全日制考研与非全日制还有学硕专硕的区别!
  14. MAYA oceanShader/海洋(纹理)
  15. 访问学者美国访学必须知道十大注意事项
  16. android返回首页
  17. perl中grep用法总结 z
  18. 如果在天堂遇见你,你还记不记得我是谁?
  19. PIM-SM原理(ASM)
  20. 基于Java的超级玛丽游戏的设计与实现

热门文章

  1. 10分钟搞定kettle源码部署
  2. 数据库乱码,频繁中断
  3. Perl 读取特定格式的文件名
  4. 喜欢就争取,得到就珍惜,错过就忘记—dbGet(二)
  5. 愁绪千万端,扰乱不成眠——如何修复Noise?
  6. nacos 负载策略_Nacos(一):Nacos介绍
  7. 育碧2k微软服务器,育碧服务器出现大规模的BUG:影响到多个平台
  8. 安装ugjava安装在哪里_南开区业销售避雷墩/哪里有安装的
  9. opencv转单通道python_在OpenCv(Python)中查找单通道图像的目录
  10. systemctl不可用时,使用service命令关闭防火墙