python3连接MySQL数据库,并执行数据库的基本增删改查操作

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: python3连接MySQL数据库,并执行数据库的基本增删改查操作

本篇为python连接数据库的详细说明,如果急需用python连接数据库,请看这篇模板文章python3连接MySQL数据库模板

python3连接MySQL数据库我们需要安装pymysql

pip install pymysql

安装好后直接import pymysql就可以导入第三方库

连接数据库

conn = pymysql.connect(
  host="localhost",  # 指示host表明是本地MySQL还是远程
    user="root",  # 用户名
    password="root",  # 密码
    db="db4",  # 要连接的数据库名
    charset="utf8mb4",  # 指定字符集,可以解决中文乱码
    cursorclass=pymysql.cursors.DictCursor  # 固定写法,类似于jdbc里边的加载驱动
)

数据库增删改查(简单写法)

在连接了数据库之后我们就要进行数据库的增删改查

"""
"""
sql = "select * from user"
cursor = conn.cursor()  # 创建一个名为cursor的指针对象
result = cursor.execute(sql)  # 执行查询操作,返回的result是受影响的行数
data = cursor.fetchone()  #该方法是获取数据库结果的第一条数据,用元祖表示,若没有则是null (在python中用None表示)
datas = cursor.fetchall()  # 该方法得到查询的所有结果,用元祖表示出来
# 进行数据处理,数据处理完就可以关闭指针和链接
curosr.close()
conn.close()
'''
如果sql语句中有可变的参数可以进行一下方式的处理
'''
sql = "select * from user where id = %s" % 23  # python的字符串处理
'''
不过这种处理方式容易产生sql注入问题
execute()这个方法其实留有参数的位置,execute(sql语句, 参数位置)
所以我们可以写作如下
'''
sql = "select * from user where id = %s and username = %s"
cursor = conn.cursor()
result = cursor.execute(sql, (12, 'zhangsan'))
# 这样就可以有效防止sql注入,或者我们也可以写做如下
sql = cursor.mogrify(select * from user where id = %s and username=%s, (12, 'zhangsan'))
cursor = conn.cursor()
result = cursor.execute(sql)
"""
"""
conn = pymysql.connect(
  host="localhost",
    user="root",
    password="root",
    db="db4", 
    charset="utf8mb4",
    cursorclass=pymysql.cursors.DictCursor
)
cursor = conn.cursor()
sql = "insert into user (username, password) values(%s, %s)"
result = cursor.execute(sql, ("zhangsan", "123456"))
conn.commit()  ''' 注意这里要提交事务,才可以插入成功 '''
cursor.close()
conn.close()
'''值得一提的是。pymysql还提供了executemany()这个神奇的方法,可以一次插入很多条数据'''
'''如下所示'''
sql = "insert into user (username, password) values(%s, %s)"
params = [('zhanshen','123'), ('lemon', '123'), ('wangsi', '1234')]
result = cursor.executemany(sql, params)
cursor.close()
conn.close()
'''这里的params可以是一个大列表,里边是一个个的元祖参数,或者也可以是一个大元祖,里边是元祖参数'''
params = cursor.
"""
"""
conn = pymysql.connect(
  host="localhost",
    user="root",
    password="root",
    db="db4", 
    charset="utf8mb4",
    cursorclass=pymysql.cursors.DictCursor
)
cursor = conn.cursor()
sql = "update user set password = %s where username = %s"
result = cursor.execute(sql, ("zhangsan", "123456"))
conn.commit()  
cursor.close()
conn.close()
''' 这里并没有什么特别需要注意的,和insert方法一样,删也是一个道理(偷懒省去,滑稽) '''

下面我们可以用with as来改善代码

conn = pymysql.connect(
  host="localhost",
    user="root",
    password="root",
    db="db4", 
    charset="utf8mb4",
    cursorclass=pymysql.cursors.DictCursor
)
try:
  with conn.cursor() as cursor:
    sql = "select * from user"
    result = cursor.execute(sql)
    print(result)
  with conn.cursor() as cursor:
    sql = "insert into user (username, password) values (%s, %s)"
    result = cursor.execute(sql, ('zhanshen', '123'))
    conn.commit()
finally:
  conn.close()
'''有木有发现用了with as就可以不用关闭cursor,因为with as会自动帮我们关闭'''
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
SQL 关系型数据库 API
HarmonyOs开发:关系型数据库封装之增删改查
每个方法都预留了多种调用方式,比如使用callback异步回调或者使用Promise异步回调,亦或者同步执行,大家在使用的过程中,可以根据自身业务需要进行选择性调用,也分别暴露了成功和失败的方法,可以针对性的判断在执行的过程中是否执行成功。
55 13
|
2月前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
133 68
|
24天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
167 15
|
3月前
|
前端开发 Java 数据库连接
javamvc配置,增删改查,文件上传下载。
【10月更文挑战第4天】javamvc配置,增删改查,文件上传下载。
42 1
|
3月前
|
存储 NoSQL API
使用Py2neo进行Neo4j图数据库的增删改查操作
使用Py2neo进行Neo4j图数据库的增删改查操作
130 5
|
3月前
|
数据可视化 API PHP
低代码开发工具-学生管理系统-老师管理增删改查实现
低代码开发工具-学生管理系统-老师管理增删改查实现
49 5
|
3月前
|
IDE 网络安全 开发工具
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
本文介绍了如何在PyCharm专业版中连接远程服务器并配置远程Python环境解释器,以便在服务器上运行代码。
520 0
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
|
3月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
76 1
|
2月前
|
测试技术 API 数据安全/隐私保护
Python连接到Jira实例、登录、查询、修改和创建bug
通过使用Python和Jira的REST API,可以方便地连接到Jira实例并进行各种操作,包括查询、修改和创建Bug。`jira`库提供了简洁的接口,使得这些操作变得简单易行。无论是自动化测试还是开发工作流的集成,这些方法都可以极大地提高效率和准确性。希望通过本文的介绍,您能够更好地理解和应用这些技术。
186 0
|
3月前
|
JavaScript 前端开发 测试技术
[新手入门]todolist增删改查:vue3+ts版本!
【10月更文挑战第15天】[新手入门]todolist增删改查:vue3+ts版本!