python3 连接数据库 mysql PyMysql
python3PyMysql
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库 , 遵循 Python 数据库 API v2.0 规范 。
PyMySQL 安装
pip install PyMySQL
PyMySQL 连接数据库
import pymysql
pymysql.Connect(host='localhost',port = 3306,user ='root',password = '****',db ='db',charset = 'utf8')
- host :数据库地址(本地:localhost或127.0.0.1)
- port:数据库端口(默认:3306)
- user:数据库登录用户
- password:数据库登录密码
- db:连接的数据库名称
- charset:编码格式(推荐utf8)
PyMySQL的连接对象API
pymysql.connections.Connection(host=None, user=None, password='', database=None, port=0, unix_socket=None, charset='', sql_mode=None, read_default_file=None, conv=None, use_unicode=None, client_flag=0, cursorclass=<class 'pymysql.cursors.Cursor'>, init_command=None, connect_timeout=10, ssl=None, read_default_group=None, compress=None, named_pipe=None, autocommit=False, db=None, passwd=None, local_infile=False, max_allowed_packet=16777216, defer_connect=False, auth_plugin_map=None, read_timeout=None, write_timeout=None, bind_address=None, binary_prefix=False, program_name=None, server_public_key=None)
- host :数据库服务器所在的主机
- user :以以下身份登录的用户名
- password :使用的密码。
- database :要使用的数据库,无则不使用特定的数据库。
- port :要使用的MySQL端口,默认情况下通常可以。(预设值:3306)
- bind_address :当客户端具有多个网络接口时,请指定从中连接到主机的接口。参数可以是主机名或IP地址。
- unix_socket :(可选)您可以使用unix套接字而不是TCP / IP。
- read_timeout :从连接读取的超时(以秒为单位)(默认值:无-无超时)
- write_timeout :写入连接的超时时间(以秒为单位)(默认值:无-无超时)
- charset :您要使用的字符集。
- sql_mode :要使用的默认SQL_MODE。
- read_default_file :指定my.cnf文件以从[client]部分下读取这些参数。
- conv :要使用的转换字典,而不是默认字典。这用于提供类型的自定义编组和解编组。请参阅转换器。
- use_unicode :是否默认为unicode字符串。对于Py3k,此选项默认为true。
- client_flag :发送到MySQL的自定义标志。查找常量中的潜在值。
- cursorclass :要使用的自定义光标类。
- init_command :建立连接时要运行的初始SQL语句。
- connect_timeout :连接时引发异常之前的超时。(默认值:10,最小值:1,最大值:31536000)
- ssl :类似于mysql_ssl_set()参数的参数字典。
- read_default_group :要从配置文件中读取的组。
- compress :不支持
- named_pipe :不支持
- autocommit : 自动提交模式。无表示使用服务器默认值。(默认值:False)
- local_infile :布尔值,用于启用LOAD DATA LOCAL命令。(默认值:False)
- max_allowed_packet :发送到服务器的最大数据包大小,以字节为单位。(默认值:16MB)仅用于限制小于默认值(16KB)的“ LOAD LOCAL INFILE”数据包的大小。
- defer_connect :在构造时不要显式连接-等待连接调用。(默认值:False)
- auth_plugin_map :处理该插件的类的插件名称字典。该类将Connection对象作为构造函数的参数。该类需要使用身份验证数据包作为参数的身份验证方法。对于对话框插件,可以使用提示(回显,提示)方法(如果没有身份验证方法)从用户返回字符串。(实验性)
- server_public_key : SHA256身份验证插件公共密钥值。(默认值:无)
- db :数据库的别名。(为了与MySQLdb兼容)
- passwd :密码别名。(为了与MySQLdb兼容)
- binary_prefix :在字节和字节数组上添加_binary前缀。(默认值:False)
数据库查询操作
Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
- fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
- fetchall(): 接收全部的返回结果行.
- rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。
举例
查询本地数据库test的student表的数据(用户:root 密码:123456,编码:utf-8)
import pymysqlconn = pymysql.Connect( # 打开数据库连接host='localhost',port = 3306,user = 'root',password = '123456',db = 'test',charset='utf8'
)
cur = conn.cursor() # 使用cursor()方法获取操作游标
sql = "select * from student" # SQL 查询语句
try:cur.execute(sql) # 执行SQL语句results = cur.fetchall() # 获取所有记录列表for db in results:id = db[0]name = db[1]city = db[2]age = db[3]print('ID:%s 姓名:%s 年龄:%s 城市:%s'%(id,name,age,city))
except:print('error')
结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5FqSoedP-1677376028871)(images\20200105104010.png)]
数据库更新操作
import pymysqlconn = pymysql.Connect( # 打开数据库连接host='localhost',port = 3306,user = 'root',password = '123456',db = 'test',charset='utf8'
)
cur = conn.cursor() # 使用cursor()方法获取操作游标
sql = "" # SQL更新语句
try:cur.execute(sql) # 执行SQL语句db.commit() # 提交修改
except:# 发生错误时回滚db.rollback()
- 建议添加发生错误时回滚
游标对象方法
execute(query, args=None)
-
介绍:执行查询
-
参数:
- query:str类型,要查询的SQL语句
- args : 元组,列表或字典,与查询一起使用的参数。(可选的)
-
返回值:受影响的行数。
-
注意: 如果args是列表或元组,则%s可用作查询中的占位符。如果args是字典,则%(name)s可用作查询中的占位符。
executemany(query, args)
- 介绍: 针对一个查询运行多个数据
- 参数:
- query: 查询要在服务器上执行 。
- args : 序列或映射的序列。用作参数 。
- 返回值:受影响的行数(如果有)
- 注意: 此方法提高了多行INSERT和REPLACE的性能。否则,这等效于使用execute()遍历args
fetchall()
- 介绍:获取所有行
fetchmany(size = None )
- 介绍:获取多行
- size:要获取的行数
fetchone()
- 介绍:获取下一行
close()
- 介绍: 关闭游标只会耗尽所有剩余数据。
相关文章:
python3 连接数据库 mysql PyMysql
python3PyMysql PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库 , 遵循 Python 数据库 API v2.0 规范 。 PyMySQL 安装 pip install PyMySQLPyMySQL 连接数据库 import pymysql pymysql.Connect(hostlocalhost,port 3306,user root,password **…...
昇腾AI新技能,还能预防猪生病?
国药集团动物保健股份有限公司(简称“国药动保”)是专业从事动物保健产品研发、生产和销售的国家高新技术企业,是国内少数几家具备新产品原创能力的动物保健企业。其中,猪圆环病毒灭活疫苗等市场份额位居行业前列。 “猪圆环病毒…...
模板方法模式(Template Method)
模式结构图 说明 基本方法是模板方法的组成部分。基本方法分为一下三种: 抽象方法 由抽象类声明,由其具体子类实现。C中就是纯虚函数。 具体方法 由抽象类或具体类声明并实现,子类可以进行覆盖也可以继承。C中是虚函数。 钩子方法 由抽象类…...
C C++ typedef的使用
一、为基本数据类型起别名 typedef int myint; myint x 5; "myint"是"int"的别名,可以使用"myint"来代替"int"声明变量,这个很好理解,但是也很少有人这么用吧。 二、为结构体起别名 …...
Laravel框架03:DB类操作数据库
Laravel框架03:DB类操作数据库一、概述二、数据表的创建与配置三、增删改操作1. 增加信息2. 修改数据3. 删除数据四、查询操作1. 取出基本数据2. 取出单行数据3. 获取一个字段的值4. 获取多个字段的值5. 排序6. 分页五、执行任意的SQL语句一、概述 按照MVC的架构&a…...
数据结构期末复习总结(前章)
作者的话 作为一名计算机类的学生,我深知数据结构的重要性。在期末复习前,我希望通过这篇博客给大家一些复习建议。希望能帮助大家夯实数据结构的基础知识,并能够更好地掌握数据结构和算法的应用。 一、绪论 数据:信息的载体&am…...
设计环形队列
文章目录1.思路分析1.1队列空满分析1.2出队分析2.循环队列设计1.思路分析 1.1队列空满分析 首先我们假设一个长度为4的环形队列 队头front 队尾rear 当队列为空时 frontrear 当队列满时 frontrear 所以我们无法判断队列是满的或者空的 因此我们多加入一个空间使队列长度为5&am…...
面向对象之-接口鉴权
1 需求 1.1 需求背景 为了保证接口调用的安全性,我们希望设计实现一个接口调用鉴权功能,只有经过认证之后的系统才能调用我们的接口,没有认证过的系统调用我们的接口会被拒绝。 2 需求分析 2.1 基础分析 对于如何做鉴权这样一个问题&…...
Python 多进程多线程线程池进程池协程
目录 一、线程与进程很简单的介绍 1.1 线程与进程的区别 二、多进程Process 2.1 多进程与多线程的区别 2.2 多进程为啥要使用队列 2.3 控制进程运行顺序 2.3.1 join , 2.3.1 daemon 守护进程 2.4 进程id 2.5 进程 存活状态is_alive() 2.5 实现自定义多…...
【自然语言处理】基于句子嵌入的文本摘要算法实现
基于句子嵌入的文本摘要算法实现人们在理解了文本的含义后,很容易用自己的话对文本进行总结。但在数据过多、缺乏人力和时间的情况下,自动文本摘要则显得至关重要。一般使用自动文本摘要的原因包括: 减少阅读时间根据摘要,选择自…...
fiddler抓包
一、工具介绍Fiddler是一个通过代理的方式来进行抓包工具,运行时会在本地建立一个代理服务,默认地址:127.0.0.1:8888。Fiddler开启之后,配置本机代理,再打开IE浏览器,IE的PROXY会自动变成127.0.0.1:8888&am…...
【Linux】网络套接字编程
前言 在掌握一定的网络基础,我们便可以先从代码入手,利用UDP协议/TCP协议进行编写套接字程序,明白网络中服务器端与客户端之间如何进行连接并且通信的。 目录 一、了解源目的IP、端口、网络字节序、套接字 端口号: 套接字&…...
break与continue关键字
1.概述 不知道大家有没有这样一种感受哈,有的时候容易混淆break语句和continue语句的用法,总是模棱两可,不敢确定自己是否使用正确了。正好,我们本篇的重点就是break和continue关键字的用法。 2.使用场景 Java中为啥会诞生break…...
kafka使用入门案例与踩坑记录
每次用到kafka时都会出现各种奇怪的问题,综合实践,下面汇总下主要操作步骤: Docker镜像形式启动 zookeeper启动 docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeperkafka启动 docker run --name kafka01 -p 9092:909…...
系统启动太慢,调优后我直呼Nice
问题背景最近在负责一个订单系统的业务研发,本来不是件困难的事。但是服务的启动时间很慢,慢的令人发指。单次启动的时间约在10多分钟左右,基本一次迭代、开发,大部分的时间都花在了启动项目上。忍无可忍的我,终于决定…...
java知识点
文章目录异常写法JVM加载反射访问private调用方法动态代理注解元数据:TargetRetention元注解泛型编写泛型擦拭法局限通配符无限定通配符(<?>)集合重写方法和实现类IO流字节与字符转换同步和异步可以设置编码的类Print*类Files时间与日期时区一种二种三种异常…...
文件的打开关闭和顺序读写
目录 一、文件的打开与关闭 (一)文件指针 (二) 文件的打开和关闭 二、文件的顺序读写 (一)fputc 1. 介绍 2. 举例 (二)fgetc 1. 介绍 2. 举例1 3. 举例2 (三&…...
(十八)操作系统-进程互斥的软件实现方法
文章目录一、知识总览二、单标志法三、双标志先检查法四、双标志后检查法五、Peterson算法六、总结一、知识总览 二、单标志法 算法思想:两个进程在访问临界区后,会把使用临界区的权限转交给另一个进程。也就是说每个进程进入临界区的权限只能被另一个进…...
2023年三月份图形化一级打卡试题
活动时间 从2023年3月1日至3月21日,每天一道编程题。 本次打卡的规则如下: 小朋友每天利用10~15分钟做一道编程题,遇到问题就来群内讨论,我来给大家答疑。 小朋友做完题目后,截图到朋友圈打卡并把打卡的截图发到活动群…...
linux 防火墙管理-firewalld
什么是Firewalld 当前很多linux系统中都默认使用 firewalld(Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器)服务作为防火墙配置管理工具。 “firewalld”是firewall daemon。它提供了一个动态管理的防火墙&#x…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...
