Python --数据库操作

目录

1, mysql

1-1, mysql驱动

1-2, 连接mysql

1-3, 执行sql语句

1-3-1, 创建表

1-3-2, 插入数据

1-3-3, 查询数据

1-3-4, 获取结果集

1-4, 断开mysql连接


1, mysql

1-1, mysql驱动

python要连接mysql需要安装mysql驱动

安装mysql的驱动命令:pip install  mysql-connector-python

In [22]: pip install mysql-connector-python
Looking in indexes: http://mirrors.aliyun.com/pypi/simple/
Collecting mysql-connector-pythonDownloading http://mirrors.aliyun.com/pypi/packages/d3/b8/6798a0f91e595c0704a94c1e32a00ca930f77cb8f0f96c7e4dad4f9db1fe/mysql_connector_python-8.1.0-cp311-cp311-win_amd64.whl (10.8 MB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.8/10.8 MB 777.8 kB/s eta 0:00:00
Requirement already satisfied: protobuf<=4.21.12,>=4.21.1 in c:\users\administrator\appdata\local\programs\python\python311\lib\site-packages (from mysql-connector-python) (4.21.12)
Installing collected packages: mysql-connector-python
Successfully installed mysql-connector-python-8.1.0
Note: you may need to restart the kernel to use updated packages.

1-2, 连接mysql

命令:mysql.connector.conect(user=用户名, password=密码, database=数据库名)

# 导入mysql驱动
In [23]: import mysql.connector# 创建连接
In [24]: conn = mysql.connector.connect(user='xxxx', password='xxxx', database='scott')

1-3, 执行sql语句

要执行sql语句,需要通过"连接"创建游标,在通过游标执行sql语句

cursor = conn.cursor():创建游标

cursor.excute(sql语句):执行单挑sql语句

cursor.excutemany(sql语句, 参数列表)

1-3-1, 创建表

# 创建游标
In [27]: cursor = conn.cursor()# 通过sql语句创建表
In [47]: cursor.execute('''create table user(...: id bigint not null,...: name varchar(20) not null,...: job varchar(20) not null,...: constraint pk_user_table primary key (id));''')# 执行sql语句,查询表
In [59]: cursor.execute('show tables;')# 获取查询结果
In [60]: cursor.fetchall()
Out[60]:
[('bbb',),('bbb_1',),('dept',),('emp',),('salgrade',),('snapshot_table',),('user',)]# 执行单条sql语句
# 这里这里的占位符为%s, sql语句与参数之间用的是逗号
In [160]: cursor.execute('insert into user (id, name, job) values (%s, %s, %s);', (20, 'fdsa', 'fdsaf'))# 执行多条sql语句, sql语句与参数之间用的是逗号
In [137]: users
Out[137]: [(4, 'ee', 'ee1'), (5, 'ff', 'ff1')]In [139]: cursor.executemany('''...: insert into user...: (id, name, job)...: values...: (%s, %s, %s);...: ''', users)

1-3-2, 插入数据

# 向数据库中插入数据
In [69]: cursor.execute('''...: insert into user...: (id, name, job)...: values...: (1, 'aa', 'aa1'),...: (2, 'bb', 'bb1'),...: (3, 'cc', 'cc1')...: ''')# 获取收影响的行
In [70]: cursor.rowcount
Out[70]: 3# 更新数据库数据后,需要提交,数据才能保存到数据库中
In [79]: conn.commit()

1-3-3, 查询数据

In [71]: cursor.execute('select * from user;')

1-3-4, 获取结果集

获取结果集通过命令:

cursor.fetchone():获取结果集一条记录

cursor.fetchmany(n):根据定义值(n),获取结果集n条记录

cursor.fetchall():获取所有结果集

# 通过cursor.fetchall()获取整个结果集
In [72]: cursor.fetchall()
Out[72]: [(1, 'aa', 'aa1'), (2, 'bb', 'bb1'), (3, 'cc', 'cc1')]In [148]: cursor.execute('select * from user;')# 获取结果集中一条记录
In [149]: cursor.fetchone()
Out[149]: (1, 'aa', 'aa1')# 获取结果集中3条记录, 数字3,表示获取3条,根据定义的数字来获取结果集的条数
In [150]: cursor.fetchmany(3)
Out[150]: [(2, 'bb', 'bb1'), (3, 'cc', 'cc1'), (4, 'ee', 'ee1')]# 若结果集没有被获取完时,再次执行sql语句,会报错
# 这时需要通过cursor.fetchall()获取完整结果集后,再执行sql语句
In [151]: cursor.execute('select * from user;')
---------------------------------------------------------------------------
InternalError                             Traceback (most recent call last)
Cell In[151], line 1
----> 1 cursor.execute('select * from user;')File ~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mysql\connector\cursor_cext.py:303, in CMySQLCursor.execute(self, operation, params, multi)301 except (ProgrammingError, ReferenceError) as err:302     raise ProgrammingError("Cursor is not connected", 2055) from err
--> 303 self._cnx.handle_unread_result()305 stmt = ""306 self.reset()File ~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mysql\connector\connection_cext.py:955, in CMySQLConnection.handle_unread_result(self, prepared)953     self.consume_results()954 elif unread_result:
--> 955     raise InternalError("Unread result found")InternalError: Unread result found# 获取完整结果集后,再次执行sql语句成功
In [154]: cursor.fetchall()
Out[154]: [(5, 'ff', 'ff1')]In [156]: cursor.execute('select * from user;')

1-4, 断开mysql连接

操作完mysql后,需要断开连接

cursor.close():断开游标

conn.close():断开连接

In [168]: cursor.close()
Out[168]: TrueIn [169]: conn.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/56005.shtml

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

相关文章

java练习8.100m小球落地

题目: 如一个小球从100米高度自由落下&#xff0c;每次落地后就反跳回原高度的一半。 那么求它在第10次落地时&#xff0c;共经过多少米&#xff1f;第10次反弹多高&#xff1f; public static void main(String[] args) {/*假如一个小球从100米高度自由落下&#xff0c;每次落…

保姆级教程:从0到1使用Stable Diffusion XL训练LoRA模型 |【人人都是算法专家】

Rocky Ding 公众号&#xff1a;WeThinkIn 写在前面 【人人都是算法专家】栏目专注于分享Rocky在AI行业中对业务/竞赛/研究/产品维度的思考与感悟。欢迎大家一起交流学习&#x1f4aa; 大家好&#xff0c;我是Rocky。 Rocky在知乎上持续撰写Stable Diffusion XL全方位的解析文章…

不系安全带抓拍自动识别

不系安全带抓拍自动识别系统通过yolo系列算法框架模型利用高清摄像头&#xff0c;不系安全带抓拍自动识别算法对高空作业场景进行监控&#xff0c;当检测到人员未佩戴安全带时会自动抓拍并进行告警记录。YOLO系列算法是一类典型的one-stage目标检测算法&#xff0c;其利用ancho…

持续更新串联记忆English words

&#xff08;一&#xff09;这是一组关于“服装搭配”的单词。通过在记忆中检索&#xff0c;回忆起隐藏的信息吧~ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>今日单词>>&…

计算机安全学习笔记(I):访问控制安全原理

访问控制原理 从广义上来讲&#xff0c;所有的计算机安全都与访问控制有关。 RFC 4949: Internet Security Glossary, Version 2 (rfc-editor.org) RFC 4949 定义的计算机安全&#xff1a;用来实现和保证计算机系统的安全服务的措施&#xff0c;特别是保证访问控制服务的措施…

c++11 标准模板(STL)(std::basic_istringstream)(二)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_ostringstream;(C11 前)template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allo…

成集云 | 旺店通多包裹数据同步钉钉 | 解决方案

源系统成集云目标系统 方案介绍 随着品牌电商兴起&#xff0c;线上线下开始逐渐融为一体&#xff0c;成集云以旺店通ERP系统为例&#xff0c;通过成集云-旺店通连接器&#xff0c;将旺店通ERP系统多包裹数据同步至钉钉实现数据互通&#xff0c;帮助企业解决了电商发货存在的错…

华为数通方向HCIP-DataCom H12-821题库(单选题:61-80)

第61题 关于 BGP 的Keepalive报文消息的描述,错误的是 A、Keepalive周期性的在两个BGP邻居之间发送 B、Keepalive报文主要用于对等路由器间的运行状态和链路的可用性确认 C、Keepalive 报文只包含一个BGP数据报头 D、缺省情况下,Keepalive 的时间间隔是180s 答案&#xff…

基于SSM的医院管理系统——LW模板

摘 要 21世纪&#xff0c;在科学技术的飞速发展的社会下&#xff0c;人们对科学技术以及信息化时代有着新的认识&#xff0c;不同领域的人们对科技水平都有着不同的发展&#xff0c;而科技信息也慢慢的渗透进了各行各业当中。 本文将从基于SSM的医院管理系统的现状和开发背景介…

Nuxt 菜鸟入门学习笔记三:视图

文章目录 入口文件组件 Components页面 Pages布局 Layouts Nuxt 官网地址&#xff1a; https://nuxt.com/ Nuxt 提供多个组件层来实现应用程序的用户界面。 入口文件 App.vue组件 Components页面 Pages布局 Layouts 下面逐一进行介绍。 入口文件 默认情况下&#xff0c;Nu…

LSF 安装目录,快速参考 LSF 命令、守护程序、配置文件、日志文件和重要集群配置参数

样本 UNIX 和 Linux 安装目录 守护程序错误日志文件 守护程序错误日志文件存储在 LSF_LOGDIR 在 lsf.conf 文件中定义的目录中。 LSF 基本系统守护程序日志文件LSF 批处理系统守护程序日志文件pim.log.host_namembatchd.log.host_namembatchd.log.host_namesbatchd.log.host_…

Programming abstractions in C阅读笔记:p130-p131

《Programming Abstractions In C》学习第52天&#xff0c;p130-p131&#xff0c;总结如下&#xff1a; 一、技术总结 1. pig latin game 通过pig latin game掌握字符复制&#xff0c;指针遍历等操作。 /** 输入&#xff1a;字符串&#xff0c;这里采用书中坐着自定义的get…

安防视频能力平台EasyNVR视频汇聚平台关闭匿名登陆的问题的解决步骤

EasyNVR是基于RTSP/Onvif协议的安防视频能力平台&#xff0c;它可实现设备接入、实时直播、录像、检索与回放、存储、视频分发等视频能力服务&#xff0c;可覆盖全终端平台&#xff08;pc、手机、平板等终端&#xff09;&#xff0c;在智慧工厂、智慧工地、智慧社区、智慧校园等…

利用SSL证书的SNI特性建立自己的爬虫ip服务器

今天我要和大家分享一个关于自建多域名HTTPS爬虫ip服务器的知识&#xff0c;让你的爬虫ip服务器更加强大&#xff01;无论是用于数据抓取、反爬虫还是网络调试&#xff0c;自建一个支持多个域名的HTTPS爬虫ip服务器都是非常有价值的。本文将详细介绍如何利用SSL证书的SNI&#…

秋招打卡016(0827)

文章目录 前言一、今天学习了什么&#xff1f;二、关于问题的答案1.牛客网面经2.美团后端一面3.动态规划 总结 前言 提示&#xff1a;这里为每天自己的学习内容心情总结&#xff1b; Learn By Doing&#xff0c;Now or Never&#xff0c;Writing is organized thinking. 先多…

【base64】JavaScriptuniapp 将图片转为base64并展示

Base64是一种用于编码二进制数据的方法&#xff0c;它将二进制数据转换为文本字符串。它的主要目的是在网络传输或存储过程中&#xff0c;通过将二进制数据转换为可打印字符的形式进行传输 JavaScript 压缩图片 <html><body><script src"https://code.j…

【机器学习7】特征缩放

特征缩放 &#x1f340;特征缩放的重要性&#x1f331;归一化&#x1f331;标准化&#x1f331;更高级的缩放方法&#x1f338;导入数据集&将数据集划分为训练集和测试集&#x1f338;Sklearn-Learn算法实现归一化&#x1f338;Sklearn-Learn算法实现标准化 &#x1f340;特…

Android——基本控件(下)(十八)

1. 时钟组件&#xff1a;AnalogClock与DigitalClock 1.1 知识点 &#xff08;1&#xff09;掌握AnalogClock与DigitalClock的使用&#xff1b; 1.2 具体内容 package com.example.clockproject;import android.os.Bundle; import android.app.Activity; import android.view…

LeetCode 1267. 统计参与通信的服务器

【LetMeFly】1267.统计参与通信的服务器 力扣题目链接&#xff1a;https://leetcode.cn/problems/count-servers-that-communicate/ 这里有一幅服务器分布图&#xff0c;服务器的位置标识在 m * n 的整数矩阵网格 grid 中&#xff0c;1 表示单元格上有服务器&#xff0c;0 表…

【C++设计模式】开放-封闭原则

2023年8月27日&#xff0c;周日下午 我觉得我的这篇博客还是写得很不错的&#xff0c;哈哈哈。 目录 概述举例说明用开放-封闭原则重构 概述 开放-封闭原则&#xff08;Open-Closed Principle&#xff0c;OCP&#xff09;是面向对象设计中的一个重要原则&#xff0c;也是许多…