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

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: 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会自动帮我们关闭'''
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
8月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
354 13
|
8月前
|
SQL 关系型数据库 MySQL
MySQL数据库连接过多(Too many connections)错误处理策略
综上所述,“Too many connections”错误处理策略涉及从具体参数配置到代码层面再到系统与架构设计全方位考量与改进。每项措施都需根据具体环境进行定制化调整,并且在执行任何变更前建议先行测试评估可能带来影响。
1702 11
|
8月前
|
SQL 监控 关系型数据库
查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
以上步骤提供了直观、实用且易于理解且执行的指导方针来监管和优化数据库服务器配置。务必记得,在做任何重要变更前备份相关配置文件,并确保理解每个参数对系统性能可能产生影响后再做出调节。
765 11
|
8月前
|
SQL 关系型数据库 MySQL
排除通过IP访问MySQL时出现的连接错误问题
以上步骤涵盖了大多数遇到远程连接 MySQL 数据库时出现故障情形下所需采取措施,在执行每个步骤后都应该重新尝试建立链接以验证是否已经解决问题,在多数情形下按照以上顺序执行将能够有效地排除并修复大多数基本链接相关故障。
509 3
|
8月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
514 158
|
8月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
8月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1287 152
|
8月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
958 156
|
8月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
539 156
|
8月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(上)
最终建议:当前系统是完美的读密集型负载模型,优化重点应放在减少行读取量和提高数据定位效率。通过索引优化、分区策略和内存缓存,预期可降低30%的CPU负载,同时保持100%的缓冲池命中率。建议每百万次查询后刷新统计信息以持续优化
649 161

推荐镜像

更多