「Python入门」python操作MySQL和SqlServer

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: **摘要:**了解如何使用Python的pymysql模块与MySQL数据库交互。首先,通过`pip install pymysql`安装模块。pymysql提供与MySQL的连接功能,例如创建数据库连接、执行SQL查询。在设置好MySQL环境后,使用`pymysql.connect()`建立连接,并通过游标执行SQL(如用户登录验证)。注意防止SQL注入,使用参数化查询。增删改操作需调用`conn.commit()`来保存更改。pymssql模块类似,但导入和连接对象创建略有不同。


@TOC


前言

pymysql模块模块说明:是一个Python编写的MySQL驱动程序,让我们可以用Python语言操作MySQL数据库。
在这里插入图片描述


一、安装第三方模块

pip install pymysql  // 安装pymysql
pip install pymssql  // 安装pymssql

在这里插入图片描述

二、pymysql模块使用说明

2.1 mysql数据库及环境准备

注:很多同学卡在这个环节不知道怎么下一步,在进行mysql数据库连接,如果已掌握的同学请直接跳过进入下一步2.3流程,如果未掌握的同学可以通过phpstudy本地一键部署,相对比较容易入手。phpstudy小皮面板安装包→传送门

2.1.1 官网下载集成环境

在这里插入图片描述

2.1.2 面版配置

在这里插入图片描述

2.1.3 进入mysql管理工具

在这里插入图片描述

2.1.4 输入数据库账号密码

初始化账号 root
初始化密码 root
建议修改root密码并新增用户角色管理对应的数据库

演示环境账号root,密码root,数据库命名beautydb,表命名userinfo,数据字段1(userName:小王子,password:123)数据字段2(userName:Anna,password:123)。
在这里插入图片描述

2.2 pymysql操作流程逻辑视图

在这里插入图片描述

2.3 pymysql的使用

2.3.1 使用Python实现用户登录

# 实现:使用Python实现用户登录,如果用户存在则登录成功(该用户已在数据库中)
import pymysql # 导入pymysql模块
user = input('请输入用户名:')
pwd = input('请输入密码:')
# 1.连接
# host:连接的mysql主机,如果本机是’localhost’
# port:连接的mysql主机的端口,默认是3306
# database:数据库的名称
# user:连接的用户名
# password:连接的密码
# charset:通信采用的编码方式,推荐使用utf8
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root', db='beautydb', charset='utf8')

# 2.创建游标
# 创建获取游标对象的目的就是要执行sql语句,完成对数据库的增、删、改、查操作的代码
cursor = conn.cursor()
#注意%s需要加引号
sql = "select * from userinfo where userName='%s' and password='%s'" %(user, pwd)
print(sql)

# 3.执行sql语句
cursor.execute(sql)
result=cursor.execute(sql) #执行sql语句,返回sql查询成功的记录数目
print(result)
cursor.close()

# 关闭连接,游标和连接都要关闭
# conn.close():关闭连接
# conn.commit():提交数据
# conn.rollback():撤销数据
conn.close()
if result:
  print('登陆成功')
else:
  print('登录失败')

在这里插入图片描述

2.3.2 pymysql的使用抛异常

异常情况: 连接超时conect_timeout、由于计算机积极拒绝,无法连接

在这里插入图片描述
处理方案: 如果你遇到这个情况,标识你mysql数据库未安装或未启动服务。可以参照步骤2.1学习一下

2.4 execute()之sql注入

  • sql注入之:用户存在,绕过密码
    xxx' -- 任意字符
  • sql注入之:用户不存在,绕过用户与密码
    xxx' or 1=1 -- 任意字符
# 原来是我们对sql进行字符串拼接
sql = "select * from userinfo where userName='%s' and password='%s'" %(user, pwd)
print(sql)
result=cursor.execute(sql)

# 改写为(execute帮我们做字符串拼接,我们无需且一定不能再为%s加引号了)
# !!!注意%s需要去掉引号,因为pymysql会自动为我们加上
sql="select * from userinfo where userName=%s and password=%s" 
# pymysql模块自动帮我们解决sql注入的问题,只要我们按照pymysql的规矩来。
result=cursor.execute(sql,[user,pwd])

完整案例:

# 实现:使用Python实现用户登录,如果用户存在则登录成功(假设该用户已在数据库中)
import pymysql # 导入pymysql模块
user = input('请输入用户名:')
pwd = input('请输入密码:')
# 1.连接
# host:连接的mysql主机,如果本机是’localhost’
# port:连接的mysql主机的端口,默认是3306
# database:数据库的名称
# user:连接的用户名
# password:连接的密码
# charset:通信采用的编码方式,推荐使用utf8
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root', db='beautydb', charset='utf8')

# 2.创建游标
# 创建获取游标对象的目的就是要执行sql语句,完成对数据库的增、删、改、查操作的代码
cursor = conn.cursor()
#注意%s需要加引号
sql="select * from userinfo where userName=%s and password=%s" 
print(sql)

# 3.执行sql语句
result=cursor.execute(sql,[user,pwd]) # 执行sql语句,返回sql查询成功的记录数目
print(result)
cursor.close()

# 关闭连接,游标和连接都要关闭
# conn.close():关闭连接
# conn.commit():提交数据
# conn.rollback():撤销数据
conn.close()
if result:
  print('登陆成功')
else:
  print('登录失败')

在这里插入图片描述

2.5 增、删、改:conn.commit()

# 增、删、改:conn.commit()
# commit()方法:在数据库里增、删、改的时候,必须要进行提交,否则插入的数据不生效。
import pymysql # 导入pymysql模块
user = input('请输入用户名:')
pwd = input('请输入密码:')
# user2 = input('请输入用户名2:')
# pwd2 = input('请输入密码2:')
# 1.连接
# host:连接的mysql主机,如果本机是’localhost’
# port:连接的mysql主机的端口,默认是3306
# database:数据库的名称
# user:连接的用户名
# password:连接的密码
# charset:通信采用的编码方式,推荐使用utf8
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root', db='beautydb', charset='utf8')
# 2.创建游标
cursor = conn.cursor()
# 操作
# 增
# sql = "insert into user(username,password) values (%s,%s)"
# result=cursor.execute(sql,[user,pwd]) # 执行sql语句

#同时插入多条数据
# sql = "insert into user(username,password) values (%s,%s)"
# result=cursor.executemany(sql,[(user,pwd),(user2,pwd2)])
# print(result)

# 改
# sql = "update user set username = %s where uid = %s"
# print(sql)
# result = cursor.execute(sql,[user,pwd])
# print(result)

# 删
# sql = "delete from user where uid = %s"
# print(sql)
# result = cursor.execute(sql,[user])
# print(result)

#一定记得commit
conn.commit()

# try:
    # cursor.execute(sql)  # 执行sql语句
    # conn.commit() # 增删改都必须提交数据
# except:
    # conn.rollback() # 如果报错就对修改的数据进行撤销,表示数据回滚

# 4.关闭游标
cursor.close()
# 5.关闭连接
conn.close()

2.6 查:fetchone、fetchmany、fetchall

# fetchone() 获取下一行数据,第一次为首行;
# 查询第一行的数据
result= cursor.fetchone()
print(result) 
# 查询第二行数据
result = cursor.fetchone()
print(result) 

# fetchall()获取所有行数据源
result = cursor.fetchall()
print(result)

# fetchmany(n) 获取第n行数据
result = cursor.fetchmany(2) # 获取第2行数据
print(result)

三、pymssql模块使用说明

pymssql模块 与 pymyql模块的区别在于:

  • 导包:import pymssql
  • 创建连接对象:conn = pymssql.connect()
    其他语法与pymyql一模一样就不过多冗余讲解了。
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
24天前
|
缓存 算法 数据处理
Python入门:9.递归函数和高阶函数
在 Python 编程中,函数是核心组成部分之一。递归函数和高阶函数是 Python 中两个非常重要的特性。递归函数帮助我们以更直观的方式处理重复性问题,而高阶函数通过函数作为参数或返回值,为代码增添了极大的灵活性和优雅性。无论是实现复杂的算法还是处理数据流,这些工具都在开发者的工具箱中扮演着重要角色。本文将从概念入手,逐步带你掌握递归函数、匿名函数(lambda)以及高阶函数的核心要领和应用技巧。
Python入门:9.递归函数和高阶函数
|
24天前
|
程序员 UED Python
Python入门:3.Python的输入和输出格式化
在 Python 编程中,输入与输出是程序与用户交互的核心部分。而输出格式化更是对程序表达能力的极大增强,可以让结果以清晰、美观且易读的方式呈现给用户。本文将深入探讨 Python 的输入与输出操作,特别是如何使用格式化方法来提升代码质量和可读性。
Python入门:3.Python的输入和输出格式化
|
24天前
|
开发者 Python
Python入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数
|
24天前
|
存储 索引 Python
Python入门:6.深入解析Python中的序列
在 Python 中,**序列**是一种有序的数据结构,广泛应用于数据存储、操作和处理。序列的一个显著特点是支持通过**索引**访问数据。常见的序列类型包括字符串(`str`)、列表(`list`)和元组(`tuple`)。这些序列各有特点,既可以存储简单的字符,也可以存储复杂的对象。 为了帮助初学者掌握 Python 中的序列操作,本文将围绕**字符串**、**列表**和**元组**这三种序列类型,详细介绍其定义、常用方法和具体示例。
Python入门:6.深入解析Python中的序列
|
24天前
|
存储 SQL 索引
Python入门:7.Pythond的内置容器
Python 提供了强大的内置容器(container)类型,用于存储和操作数据。容器是 Python 数据结构的核心部分,理解它们对于写出高效、可读的代码至关重要。在这篇博客中,我们将详细介绍 Python 的五种主要内置容器:字符串(str)、列表(list)、元组(tuple)、字典(dict)和集合(set)。
Python入门:7.Pythond的内置容器
|
24天前
|
存储 Linux iOS开发
Python入门:2.注释与变量的全面解析
在学习Python编程的过程中,注释和变量是必须掌握的两个基础概念。注释帮助我们理解代码的意图,而变量则是用于存储和操作数据的核心工具。熟练掌握这两者,不仅能提高代码的可读性和维护性,还能为后续学习复杂编程概念打下坚实的基础。
Python入门:2.注释与变量的全面解析
|
11天前
|
数据采集 人工智能 数据挖掘
Python 编程基础与实战:从入门到精通
本文介绍Python编程语言,涵盖基础语法、进阶特性及实战项目。从变量、数据类型、运算符、控制结构到函数、列表、字典等基础知识,再到列表推导式、生成器、装饰器和面向对象编程等高级特性,逐步深入。同时,通过简单计算器和Web爬虫两个实战项目,帮助读者掌握Python的应用技巧。最后,提供进一步学习资源,助你在Python编程领域不断进步。
|
15天前
|
SQL 关系型数据库 MySQL
基于SQL Server / MySQL进行百万条数据过滤优化方案
对百万级别数据进行高效过滤查询,需要综合使用索引、查询优化、表分区、统计信息和视图等技术手段。通过合理的数据库设计和查询优化,可以显著提升查询性能,确保系统的高效稳定运行。
34 9
|
22天前
|
SQL 关系型数据库 MySQL
Python中使用MySQL模糊查询的方法
本文介绍了两种使用Python进行MySQL模糊查询的方法:一是使用`pymysql`库,二是使用`mysql-connector-python`库。通过这两种方法,可以连接MySQL数据库并执行模糊查询。具体步骤包括安装库、配置数据库连接参数、编写SQL查询语句以及处理查询结果。文中详细展示了代码示例,并提供了注意事项,如替换数据库连接信息、正确使用通配符和关闭数据库连接等。确保在实际应用中注意SQL注入风险,使用参数化查询以保障安全性。
|
24天前
|
知识图谱 Python
Python入门:4.Python中的运算符
Python是一间强大而且便捷的编程语言,支持多种类型的运算符。在Python中,运算符被分为算术运算符、赋值运算符、复合赋值运算符、比较运算符和逻辑运算符等。本文将从基础到进阶进行分析,并通过一个综合案例展示其实际应用。