Python基础-连接Mysql数据库

一、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代码块

二、pymysql实例

1.查询

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.插入

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.修改

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.删除

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.mzph.cn/diannao/31782.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Linux内核驱动]内存动态申请

内核空间内存动态申请 更多详细内容可以查看我的github kmalloc() 函数原型: void *kmalloc(size_t size, gfp_t flags);参数说明: size:要分配的内存块的大小,以字节为单位。flags:分配标志,用于指定内…

挑战与机遇的交织

AI与音乐创作:挑战与机遇的交织 引言 近年来,人工智能技术的迅猛发展使得其在各个领域都展现出了巨大的潜力和影响力,音乐创作领域也不例外。最近上线的音乐大模型,无疑是这一趋势的一个重要节点,它极大地降低了素人…

市场价格到底是因为什么而变动?

在外汇及广泛的金融市场中,影响金融工具价格起伏的因素纷繁复杂。然而,万变不离其宗,无论是哪个市场,价格的最终决定力量始终是供需之间的平衡法则。 对于外汇、大宗商品等金融市场而言,表面上似乎受宏观经济数据、央…

FastBoot刷机获取root权限(Magisk)

1.首先要下载ADB、Fastboot等工具。 1.ADB、Fastboot工具 https://developer.android.com/studio/releases/platform-tools 2.安装FastBoot的USB驱动 https://developer.android.com/studio/run/oem-usb 2.下载对应的镜像 https://developers.google.com/android/images?…

Ubuntu系统配置C/C++编译环境

在Ubuntu系统中安装和学习C语言非常的方便,与Windows复杂的环境配置不同,Ubuntu提供了多种C/C开发工具,如GCC(GNU Compiler Collection)、GDB(GNU Debugger)和Valgrind等。这些工具不仅功能强大…

24.1 部署-交叉编译、压缩二进制文件、Docker容器

1. 交叉编译 Go语言的优越性之一是可在众多环境下运行,其中包括: 操作系统 windows、darwin、plan9、solaris、linux、netbsd/openbsd/freebsd、android体系架构 386/amd64、arm/arm64、ppc64/ppc64le、mips/mipsle/mips64/mips64le 使用go env命令可…

穿越时空的金星奥秘:揭秘古代天文学的惊人成就

在浩瀚的历史长河中,人类对宇宙的探索从未停止。而在中国古代,一项惊人的天文发现,至今仍让世界为之惊叹。那就是西汉时期的《五星占》,一部揭示金星会合周期的珍贵文献,其精确度之高,足以令现代天文学家瞠…

【AI基础】大模型资源整理

开局一张图,全靠硬凑: 硬拼一个雷达图: AI大模型,这是核心智能助手,基于大模型搭建的拿来就用的成熟应用平台应用分享,基于大模型搭建的拿来就用的小应用AI开发,基于大模型开发小应用 学习资源…

基于gunicorn+flask+docker模型高并发部署

好的,今天我们将讨论如何使用 Gunicorn Flask Docker 来实现高并发部署。这个模型是一个流行的组合,用于部署Python编写的Web应用程序,特别是使用Flask框架的应用程序。Gunicorn是一个Python WSGI HTTP服务器,而Docker提供了一个…

容器之分栏窗体构件演示

代码; #include <gtk-2.0/gtk/gtk.h> #include <glib-2.0/glib.h> #include <gtk-2.0/gdk/gdkkeysyms.h> #include <stdio.h>int main(int argc, char *argv[]) {gtk_init(&argc, &argv);GtkWidget *window;window gtk_window_new(GTK_WINDO…

智慧园区解决方案PPT(53页)

## 1.1 智慧园区背景及需求分析 - 智慧园区的发展历程包括园区规划、经济、产业、企业、管理、理念的转变&#xff0c;强调管理模式创新&#xff0c;关注业务综合化、管理智慧化等发展。 ## 1.2 国家对智慧园区发展的政策 - 涉及多个国家部门&#xff0c;如工信部、住建部、…

抖音开放平台代开发小程序,上传模板代码

大家好&#xff0c;我是小悟 抖音小程序第三方平台开发着力于解决抖音生态体系内的小程序管理问题&#xff0c;一套模板&#xff0c;随处部署。能尽可能地减少服务商的开发成本&#xff0c;服务商只用开发一套小程序代码作为模板就可以快速批量的孵化出大量的商家小程序。 第…

Service方法增加@Asyn注解后导致bean无法找到 NoSuchBeanDefinitionException

Service方法增加Asyn注解后导致bean无法找到 NoSuchBeanDefinitionException 场景处理方法原因 场景 首先确认的是Service添加了Service或Component等注解&#xff0c;另外也增加了ComponentScan确定扫描的包路径是包含对应Service的&#xff0c;但就是无法找到这个bean。 通…

开放式耳机怎么选?五款劲爆机型强势PK!2024推荐版!

身为健身达人&#xff0c;我对耳机的要求可不低。开放式耳机让我在健身时既能享受音乐&#xff0c;又能清晰听到教练的指导。它佩戴舒适&#xff0c;不易掉落&#xff0c;而且音质出色&#xff0c;让我沉浸于运动的节奏中。市面上开放式耳机种类繁多&#xff0c;我为大家挑选了…

Omnivore:全能开源稍后阅读神器,让文字爱好者畅享阅读乐趣!

热门开源项目推荐 项目地址&#x1f517;&#x1f517;&#x1f517;&#x1f517; https://gitcode.com/omnivore-app/omnivore/overview Omnivore&#xff1a;全能开源稍后阅读神器 Omnivore App 介绍 Omnivore是一个完整的开源稍后阅读解决方案&#xff0c;专为喜欢文字…

【HarmonyOS NEXT】鸿蒙 如何在包含web组件的页面 让默认焦点有效

页面包含web组件Button组件等&#xff0c;把页面的默认焦点放到Button组件上&#xff0c;不起效果。 因为web组件默认会在组件加载完成后获取焦点&#xff1b; 可以在web的网页加载完成时onPageEnd回调中&#xff0c;将设置默认获焦的组件通过focusControl.requestFocus方法主…

自动备份SQL Server数据库,试试这4种方法!

各种规模的企业都使用 SQL 数据库来存储数据。因此&#xff0c;备份 SQL Server 数据库对于确保数据安全并在发生灾难时可恢复至关重要。对于 SQL 数据库备份&#xff0c;有多种可行的方法&#xff0c;对于特定组织来说&#xff0c;方法将取决于其具体需求。 SQL Server 备份的…

噪声-降噪引脚如何提高系统性能

由于LDO是电子器件&#xff0c;因此它们会自行产生一定量的噪声。选择低噪声LDO并采取措施来降低内部噪声对于生成不会影响系统性能的清洁电源轨而言不可或缺。 识别噪声 理想的 LDO 会生成没有交流元件的电压轨。遗憾的是&#xff0c;LDO 会像其他电子器件一样自行产生噪声。…

【乐吾乐2D可视化组态编辑器】数据通信

External Player - 哔哩哔哩嵌入式外链播放器 乐吾乐2D可视化组态编辑器地址&#xff1a;https://2d.le5le.com/ Meta2d.js支持 mqtt、websocket 和 http 轮询 3 种方式进行实时数据监听。 如果配置过 mqtt 或 websocket 或 http&#xff0c;下次打开时&#xff0c;会自动…

对于在pycharm中终端失去环境 报错-bash: conda: command not found 2024.6

背景介绍 我是在服务器上一个已经创建好conda环境&#xff0c;可以用vscode去执行conda命令 但是在pycharm上连接之后就一直不能使用conda命令 一直报错 -bash: conda: command not found 问题解读 加载环境变量文件.bashrc&#xff08;前提是你的服务器上已经给conda配置好了环…