python开发11之PyMySQL模块

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: python开发11之PyMySQL模块 1.PyMySQL安装  1.1通过pypi安装PyMySQL模块  • pypi即python package index  • 是python语言的软件仓库通过pip安装PyMySQL模块  • 官方站点为https://pypi.

python开发11之PyMySQL模块

1.PyMySQL安装 
1.1通过pypi安装PyMySQL模块 
• pypi即python package index 
• 是python语言的软件仓库通过pip安装PyMySQL模块 
• 官方站点为https://pypi.python.org

方法一:官网下载安装包,本地安装
[root@miss  ~]#yum install  -y  gcc     //安装依赖包
[root@miss  ~]#pip3  install  PyMySQL-0.9.0.tar.gz 

方法二:在线安装
[root@miss  ~]#pip3  install   pymysql 

方法三:使用国内镜像站点,为了实现安装加速,可以配置pip安装时采用国内镜像站点
[root@miss ~]#mkdir    ~/.pip/    
[root@miss ~]#vim  ~/.pip/pip.conf        
[global]    
index-url=http://pypi.douban.com/simple/    
[install]   
trusted-host=pypi.douban.com    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2.PyMySQL应用 
2.1 连接数据库 
• 创建连接是访问数据库的第一步 
conn=pymysql.connect(host=’127.0.0.1’,port=3306,user=’root’,passwd=’123456’, db=’db1’, charset=’utf8’) 
2.2 游标 
• 游标(cursor)就是游动的标识 
• 通俗的说,一条sql取出对应n条结果资源的接口/句柄,就 
是游标,沿着游标可以一次取出一行 
cursor = conn.cursor() 
2.3 插入数据 
• 对数据库表做修改操作,必须要commit 
sql1 = “insert into departments(dep_name) values(%s)” 
result = cur.execute(sql1, (‘development’,))

sql2 = “insert into departments(dep_name) values(%s)” 
data = [(‘hr’,), (‘op’,)] 
result = cur.executemany(sql2, data)

sql3 = “insert into departments(dep_name) values(%s)” 
data = [(‘行政’,), (‘财务’,), (‘运营’,)] 
result = cur.executemany(sql3, data)

conn.commit() 
2.4查询数据 
• 可以取出表中一条、多条或全部记录 
sql4 = “select * from departments” 
cur.execute(sql4) 
result = cur.fetchone() 
print(result)

result2 = cur.fetchmany(2) 
print(result2)

result3 = cur.fetchall() 
print(result3) 
2.5移动游标 
• 如果希望不是从头取数据,可以先移动游标 
cur.scroll(1, mode=”rala\ve”) 
cur.scroll(2, mode=”absolute”)

sql5 = “select * from departments” 
cur.execute(sql5) 
cur.scroll(3, mode=’absolute’) 
result4 = cur.fetchmany(2) 
print(result4) 
2.6 修改数据 
• 通过update修改某一字段的值 
sql6 = “update departments set dep_name=%s where dep_name=%s” 
result = cur.execute(sql6, (‘opera\ons’, ‘op’)) 
print(result) 
conn.commit() 
2.7 删除记录 
• 通过delete删除记录 
sql7 = “delete from departments where dep_id=%s” 
result = cur.execute(sql7, (6,)) 
print(result) 
conn.commit() 
3.案例 
发工资的数据库 
姓名、性别、出生年月、部门、联系方式、员工编号、发工资日期、基本工资、奖金、总工资 
第一范式(1NF):所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项 
联系方式应该拆分为:住址、电话号码、email等 
第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码 
把字段放到不同的表里: 
员工表:员工编号、姓名、性别、出生年月、部门ID、电话号码、email 
部门表:部门ID、部门编号 
工资表:autoid、员工编号、发工资日期、基本工资、奖金、总工资 
第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖) 
因为总工资是用基本工资和奖金算出来的,所以它不要出现在数据库表中

[root@miss  ~]#mysql -uroot -p123456
MariaDB [(none)]> CREATE DATABASE db1 DEFAULT CHARSET='utf8';
MariaDB [(none)]> use db1;
MariaDB [db1]> CREATE TABLE departments
(dep_id INT, dep_name VARCHAR(20), PRIMARY KEY(dep_id));
MariaDB [db1]> CREATE TABLE employees
(emp_id INT, emp_name VARCHAR(20) NOT NULL, gender VARCHAR(6), email VARCHAR(50), dep_id INT, PRIMARY KEY(emp_id), FOREIGN KEY(dep_id) REFERENCES departments(dep_id));
MariaDB [db1]>  CREATE TABLE salary
(auto_id INT AUTO_INCREMENT, date DATE, emp_id INT, basic INT, awards INT, PRIMARY KEY(auto_id), FOREIGN KEY(emp_id) REFERENCES employees(emp_id));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
[root@miss  ~]#cat mysql_data.py
import pymysql

conn=pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db='db1',charset='utf8')            # 创建到数据库的连接

cursor = conn.cursor()  # 创建游标,相当于打开文件返回文件对象
insert_dep1 = 'INSERT INTO departments VALUES(%s, %s)'
# cursor.execute(insert_dep1, ('1', '人事部'))
insert_deps = [(2, '运维部'), (3, '开发部'), (4, '测试部')]
cursor.executemany(insert_dep1, insert_deps)
conn.commit()  # 增删改都需要commit
cursor.close()
conn.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
[root@miss  ~]#cat mysql_modify.py
import pymysql

conn=pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db='db1',charset='utf8')            # 创建到数据库的连接

cursor = conn.cursor()  # 创建游标,相当于打开文件返回文件对象
insert_dep1 = 'UPDATE departments SET dep_name=%s WHERE dep_name=%s'
cursor.execute(insert_dep1, ('人力资源部', '人事部'))
delete1 = 'DELETE FROM departments WHERE dep_name=%s'
cursor.execute(delete1, ('测试部',))
conn.commit()  # 
cursor.close()
conn.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
[root@miss  ~]#cat mysql_query1.py
import pymysql

conn=pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db='db1',charset='utf8')            # 创建到数据库的连接
cursor = conn.cursor()

query1 = 'SELECT * FROM departments'
cursor.execute(query1)
r1 = cursor.fetchone()
print(r1)
print('#' * 20)
r2 = cursor.fetchmany(2)
print(r2)
print('#' * 20)
r3 = cursor.fetchall()
print(r3)

cursor.close()
conn.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
[root@miss  ~]#cat mysql_query2.py
import pymysql

conn=pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db='db1',charset='utf8')            # 创建到数据库的连接
cursor = conn.cursor()
query1 = 'SELECT * FROM departments'
cursor.execute(query1)
# cursor.scroll(2, mode='absolute')
# r1 = cursor.fetchall()
# print(r1)
cursor.scroll(1, mode='absolute')  # 以开头为起始点移动游标
cursor.fetchone()  # 取出一行
cursor.scroll(1, mode='relative')  # 以当前位置为参考点移动游标
r2 = cursor.fetchall()  # 取出后续所有内容
print(r2)

cursor.close()
conn.close(
原文地址https://blog.csdn.net/Echo_Blingbling/article/details/82118905
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
47 4
|
10天前
|
Python
Python Internet 模块
Python Internet 模块。
104 74
|
3天前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
37 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
28天前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
105 63
|
1月前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
1月前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
17天前
|
存储 API 数据库
使用Python开发获取商品销量详情API接口
本文介绍了使用Python开发获取商品销量详情的API接口方法,涵盖API接口概述、技术选型(Flask与FastAPI)、环境准备、API接口创建及调用淘宝开放平台API等内容。通过示例代码,详细说明了如何构建和调用API,以及开发过程中需要注意的事项,如数据库连接、API权限、错误处理、安全性和性能优化等。
68 5
|
29天前
|
机器学习/深度学习 人工智能 关系型数据库
Python开发
Python开发
40 7
|
1月前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
29天前
|
JSON API 数据格式
如何使用Python开发天猫获得淘宝买家秀API接口?
本文介绍了如何使用Python开发天猫和淘宝买家秀API接口,包括注册开放平台账号、创建应用获取API权限、构建请求URL、发送请求获取响应及解析数据等步骤,帮助开发者高效获取和处理商品信息与用户评价数据。
27 0