Python基础-连接Mysql数据库

devtools/2024/9/24 5:22:59/

mysql_0">一、pymysql

pymsql 是 Python 中操作 MySQL 的原生模块,其使用方法和 MySQL 的SQL语句几乎相同

1、下载安装

pip3 install pymysql

2、执行SQL

执行 SQL 语句的基本语法:

需要注意的是:创建链接后,都由游标来进行与数据库的操作,当然,拿到数据也靠游标

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql# 创建连接
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
# 创建游标
cursor = conn.cursor()# 执行SQL,并返回收影响行数
effect_row = cursor.execute("update hosts set host = '1.1.1.2'")# 执行SQL,并返回受影响行数
#effect_row = cursor.execute("update hosts set host = '1.1.1.2' where nid > %s", (1,))# 执行SQL,并返回受影响行数
#effect_row = cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])# 提交,不然无法保存新建或者修改的数据
conn.commit()# 关闭游标
cursor.close()
# 关闭连接
conn.close()

3、获取新创建数据自增ID

可以获取到最新自增的ID,也就是最后插入的一条数据ID

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysqlconn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
cursor = conn.cursor()
cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])
conn.commit()
cursor.close()
conn.close()# 获取最新自增ID
new_id = cursor.lastrowid

4、获取查询数据

获取查询数据的三种方式:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysqlconn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
cursor = conn.cursor()
cursor.execute("select * from hosts")# 获取第一行数据
row_1 = cursor.fetchone()# 获取前n行数据
# row_2 = cursor.fetchmany(3)# 获取所有数据
# row_3 = cursor.fetchall()conn.commit()
cursor.close()
conn.close()

5、移动游标

操作都是靠游标,那对游标的控制也是必须的

注:在fetch数据时按照顺序进行,可以使用cursor.scroll(num,mode)来移动游标位置,如:cursor.scroll(1,mode='relative')  # 相对当前位置移动
cursor.scroll(2,mode='absolute')  # 相对绝对位置移动

6、fetch数据类型

默认拿到的数据是小括号,元祖类型,如果是字典的话会更方便操作,那方法来了:

# 关于默认获取的数据是元祖类型,如果想要或者字典类型的数据,即:#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysqlconn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')# 游标设置为字典类型
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
r = cursor.execute("call p1()")result = cursor.fetchone()conn.commit()
cursor.close()
conn.close()

7、利用 with 自动关闭

每次连接数据库都需要连接和关闭,啊,好多代码,那么方法又来了:

是不是很屌啊?

# 利用with定义函数@contextlib.contextmanagerdef mysql(self, host='127.0.0.1', port=3306, user='nick', passwd='', db='db1', charset='utf8'):self.conn = pymysql.connect(host=host, port=port, user=user, passwd=passwd, db=db, charset=charset)self.cuersor = self.conn.cursor(cursor=pymysql.cursors.DictCursor)try:yield self.cuersorfinally:self.conn.commit()self.cuersor.close()self.conn.close()# 执行
with mysql() as cuersor:print(cuersor)# 操作MySQL代码块

mysql_154">二、pymysql实例

1.查询

python">import pymysql #导入数据库
conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='root',db='ketangliangxi') #创建数据库连接"""
host: 数据库服务器地址
port: 数据库端口
user: 登录用户名
passwd: 密码
db: 选择数据库名
"""cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) #创建游标,设置输出的数据为字典类型
sql = 'select * from user_information'
cursor.execute(sql) #执行sql语句row_1 = cursor.fetchone() # 获取第一行数据
print(row_1) cursor.scroll(2,mode='relative')  # 相对当前位置移动(默认相对位置移动)
# cursor.scroll(2,mode='absolute')  # 相对绝对位置移动row_2 = cursor.fetchmany(2) # 获取前n行数据
print(row_2) row_3 = cursor.fetchall() # 获取所有数据
print(row_3) cursor.close()
conn.close()

2.插入

python">import pymysql #导入数据库
conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='root',db='ketangliangxi') #创建数据库连接"""
host: 数据库服务器地址
port: 数据库端口
user: 登录用户名
passwd: 密码
db: 选择数据库名
"""cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) #创建游标,设置输出的数据为字典类型
sql = 'insert into user_information (id_cart_number, name, sex,locationID,locationxianxi,nationID) values \("4401832002043040", "小黑", 1,1,"广东广州",1)'
cursor.execute(sql) # 执行sql语句conn.commit() # 执行提交 cursor.close()
conn.close()

3.修改

python">import pymysql #导入数据库
conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='root',db='ketangliangxi') #创建数据库连接"""
host: 数据库服务器地址
port: 数据库端口
user: 登录用户名
passwd: 密码
db: 选择数据库名
"""cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) #创建游标,设置输出的数据为字典类型
sql = 'update user_information set name="小白" where id_cart_number=440183200205206789'
cursor.execute(sql) # 执行sql语句conn.commit() # 执行提交不然无法保存新建或者修改的数据cursor.close()
conn.close()

4.删除

python">import pymysql #导入数据库
conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='root',db='ketangliangxi') #创建数据库连接"""
host: 数据库服务器地址
port: 数据库端口
user: 登录用户名
passwd: 密码
db: 选择数据库名
"""cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) #创建游标,设置输出的数据为字典类型
sql = 'delete from user_information where name="耐克"'
cursor.execute(sql) # 执行sql语句conn.commit() # 执行提交,不然无法保存新建或者修改的数据cursor.close()
conn.close()

http://www.ppmy.cn/devtools/56068.html

相关文章

C语言经典例题-7

1.计算三角形的周长和面积 题目描述&#xff1a; 根据给出的三角形3条边a, b, c&#xff08;0 < a, b, c < 100,000&#xff09;&#xff0c;计算三角形的周长和面积。 输入描述: 一行&#xff0c;三角形3条边&#xff08;能构成三角形&#xff09;&#xff0c;中间用…

力扣随机一题 位运算/滑动窗口/数组

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 3191.使二进制数组全部等于1的最少操作次数I【中等】 题目&#xff1a; 给…

【python入门】数组、元组、字典

文章目录 数组&#xff08;List&#xff09;元组&#xff08;Tuple&#xff09;字典&#xff08;Dictionary&#xff09; Python 是一种非常灵活的编程语言&#xff0c;它提供了多种数据结构来存储和操作数据。下面是 Python 中数组、元组和字典的详细说明&#xff0c;以及一些…

java实现分类下拉树,点击时对应搜索---后端逻辑

一直想做分类下拉&#xff0c;然后选择后搜索的页面&#xff0c;正好做项目有了明确的需求&#xff0c;查找后发现el-tree的构件可满足需求&#xff0c;数据要求为&#xff1a;{ id:1, label:name, childer:[……] }形式的&#xff0c;于是乎&#xff0c;开搞&#xff01; 一…

iOS Swift5 视频播放 能播放各种编码格式的视频的第三方库

1.VLC for ios: MobileVLCKit VLC for ios - github 2.IJKPlayer: IJKMediaFramework 基于 FFmpeg IJKPlayer - github

边缘计算设备有哪些

边缘设备是指那些位于数据源附近&#xff0c;能够执行数据处理、分析和决策的计算设备。这些设备通常具有一定的计算能力、存储能力和网络连接能力&#xff0c;能够减少数据传输到云端的需要&#xff0c;从而降低延迟、节省带宽并提高数据处理的效率。以下是一些常见的边缘设备…

ASPICE与ISO 21434:汽车软件与网络安全标准的协同与互补

ASPICE&#xff08;Automotive SPICE&#xff09;与ISO 21434在汽车行业中存在显著的相关性&#xff0c;主要体现在以下几个方面&#xff1a; 共同目标&#xff1a; ASPICE和ISO 21434都旨在提高汽车系统和软件的质量、可靠性和安全性。ASPICE关注汽车软件开发过程的成熟度和…

Spring Cloud:构建高可用、分布式系统的现代架构

Spring Cloud是一个开源的微服务框架&#xff0c;旨在帮助开发者快速构建在分布式系统环境中运行的服务。它提供了一系列工具&#xff0c;用于在分布式系统中配置、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等领域的…